Dear Codewarriors out there,

I'm a beginner both in w32assembly and Masm32 and try to lear these from Iczelion's tutorials.

My learning method is based on making minor changes in source code, assembling it and check the results :-)

I found some bugs (?) in Iczelion's sample codes:
I tried to delete the executable file Pipe.exe from tutorial21 and wanted Qeditor to make it from pipe.asm by Build all.

But I got only two assembelr errors istead of the newly created Pipe.exe. These were:
Pipe.asm(101): Error A2006: Undefined symbol: nilength.

I encountered a similar problem in tutorial24 when I tried to rebuild Hook.exe. The error message was something like this:

Mhook.asm(12): Error A2111: conflicting parameter definition

Strange, because I was able to rebuild all the example executables except these two with the same method: Build all.

Anyone have a clue? Or a working solution ? :-)

I also applied servicepack1 and servicepack2 to Masm32 and found some minor bugs too. (It seems as if I were a buggy man :-))
When I tried to make the libs in M32lib by MAKE I found two files (bmpbutn.asm and fntdlg.asm) which caused error because in these files MAKE tried to get libs from drive D (and not from drive C as in all others).
Is this problem unique to my system or can someone repeat it on his/her own?

Thanks in advance,

Posted on 2001-09-23 02:04:38 by Unreg
There's a small typo in Pipe.asm, you must change line 100 to use nLenght (not niLenght):

mov sat.nLength,sizeof SECURITY_ATTRIBUTES

This is a SECURITY_ATTRIBUTES structure, you can get more info in your Win32 help file.


For MHook.asm there is an extra DWORD in line 12, change that line to:

wsprintfA proto C :DWORD,:VARARG

You can find the prototypes in C:\Masm32\Include\ file


Hope this helps
Posted on 2001-09-23 04:28:32 by rir3760

As long as you have both service packs, the library in service pack 2 builds correctly. What happened when I built sp1 was I forgot to remove a couple of absolute paths and the library will not build on another machine. SP2 fixes that.

Posted on 2001-09-23 08:51:45 by hutch--
Thanks rir3760!

I deleted the extra DWORD from hook.asm and the assembler made the .exe file at last.
BUT this .exe file is not fully identical to the original hook.exe! Strange but it simply returns after start and does nothing else. No hooking at all.

Unfortunately I could not found the typo in pipe.asm. It seems I have a newer file in which this typo had been already corrected.

Meanwhile I was checking all Iczelion tutorials I found that some (especially the later ones, above tutor24) behave strangely. Not all, but there are many that do the following: Masm32 generates the corresponding .exe file from the .asm files BUT these exe-s do not show up as it was intended. I mean they lack the menu-bar or menu line when I try to run them. The title is correct but nothing more I could do. (I could close them by the x at the upper right corner or rightclick on title and choose close from the menu.)

What am I doing wrong?

Anyway, thanks for the reply. And waiting for more hints :-)

Levente, Hungary
Posted on 2001-09-23 09:07:17 by Unreg

I could resolve the problem with hook.asm!

I found that there are different versions of Iczelion tutorials on the Net. I downloaded mine first from somewhere :-) then downloaded masm32 with the included tutorials too...

With the masm32 version there comes a "good" hook.lib (size 3.30 kB) but the other version (size 3.35 kB) is a defective one!

I mixed these files and it caused the error.

Posted on 2001-09-28 14:05:08 by Unreg

The problem is basically that of slightly different styles of programming between Iczelion and myself. When the examples were included in MASM32, I worked with Iczelion to standardise them so they would build in MASM32 but as you would be aware there are many different ways of building files in assembler.

The "Build All" from the editor uses a standardised name for the resource file RSRC.RC and this is often the problem when trying to build a file that came from another source. It would not be hard to make MASM32 a more rigid system but it is intentionally done so that programmers can easily change the way things work to suit their own choice.

The real win with standardisation of build format is the capacity to share technical data with other programmers as you don't have to drastically modify files to get them to work.

Posted on 2001-09-28 18:56:16 by hutch--