News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Headers upload

Started by donkey, February 12, 2009, 05:13:43 PM

Previous topic - Next topic

donkey

I have uploaded a new set of header files to my website, it has a few corrections to make the naming conventions consistent across all the COM interface definitions (mostly those IIDs that were tagged as MIDL have been retagged), I have also included a complete set of Web-Based Enterprise Management definitions (WBEM) use #include wbemidl.h to use them. I have removed the install program since there didn't seem to be much interest in it, I can put it back if anyone was actually using it. The version signature for this distribution is GOASMHDRVER = 0x012200.

I made an effort to go through all of the headers to find any instances of inconsistent naming of interfaces and classes. I think I got them all but if I missed a few just post them here. Since there is virtually no-one using COM interfaces and the affected ones were fairly obscure I did not provide for backward compatibility. I would be surprised however if any code is broken. So, as far as I can tell, the following naming convention holds true through the whole project

Interface GUIDs are prefixed with GUID_IID_
Class GUIDs are prefixed with GUID_CLSID_
Type library GUIDs are prefixed with GUID_TLBID_
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

donkey

A few small corrections to the existing headers, as well as a couple of additional files. I am thinking about leaving the header project behind as there seems to be little interest and after a long while it consists of about 300 files translated and frankly I am running out of files I find useful. I had hoped that someone else would translate Direct3D and SAPI but that doesn't look like its going to happen and I simply don't have any use for those headers myself so its hard for me to motivate myself to take them on. I will continue to correct the existing files however as I use them for my own code, as well as add any files that I translate in the normal course of programming. However, from my programming point of view the set is more than complete, it has been a long while since I ran into a definition that I didn't have for the Windows API and those that I have had to translate lately have generally been obscure COM/ActiveX interfaces which is my current obsession. The current state of the project is well beyond the needs of the average programmer or even in some cases the advanced assembly language programmer wishing to program for Windows. There are very few COM interfaces that have not been defined (my original impetus for starting the project) and very few enumerations, equates or structures not included.

For the last few headers there are a couple of notes in Windows.h that need to be read as there are some conflicts, though the headers affected (winternl.h and npptypes.h) are pretty obscure.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

donkey

A new upload, I was playing with the ATL library and did a set of headers for it. The bulk of the ATL headers are macros and code wrappers so I left that out but the interfaces and definitions are translated.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

Mark Jones

The new headers seem to work better than the older style. Thanks for working hard on them. As for the others, it may take awhile for those using the older headers to switch. (Personally it would be nice if GoASM came with a defined set of headers, at least that way everyone would be on the same page.) :wink
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

donkey

New upload...

Expanded support for Vista and XP only interfaces, structures and definitions
Several enumerations were expanded to include new enums up to Windows Vista

Added the ShObjIdl.h header with supporting files, this defines quite a few new interfaces that are Vista or XP only
Modified shlobj.h to expand the defines for Vista/XP as well as to work smoothly with ShObjIdl.h
Many corrections made to various headers.

Since I am concentrating on COM and ActiveX in my programming these days, most of the additions are related to those, there are however a few additions for flat API Windows.

The new signature is GOASMHDRVER = 0x012400
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

donkey

#5
The latest version of the header file (0x013000) has been uploaded, the version includes a change to the definitionof the GUID structure, it is now

GUID STRUCT
    Data1 dd
    Data2 dw
    Data3 dw
    Data4 db 8 DUP
ENDS


This though seemingly a minor change has the following effect on GUIDs in your program, you should now define a GUID as (though it is not obligatory)

#DEFINE GUID_CLSID_DirectDraw <0xD7B70EE0,0x4340,0x11CF,<0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35>>

Note the additional braces around the array of byte values. The change is source transparent, that is when you re-assemble older source it will not require any editing. The change was made to tidy up the GUID structure, something that has bothered me since the beginning of this project. I have also added a couple of headers (notably htmlhelp.h for hhelp 1.x) and in going through all of the headers to mod the GUIDs found several minor errors that have been corrected (mostly in very obscure files though there were a couple of doozies).

Also included are the preliminary windows.inc and all_api.inc files, they will replace the actual files and load the headers instead so older code can be assembled with the header project. For now they only do a default load but I will be comparing the older definitions and will try to make the transition source level transparent when assembling older code. There will be no distinction between the unicode and ansi versions as that is handled automatically in the header files, just copy the same files into both the IncludeA and IncludeW folders. There are bound to be conflicts at first but I will work to resolve them as they are posted. These stubs (and the accompanying gfl.txt) are only meant to be a patch so older programs will assemble without modification, I suggest that newer programs use the headers directly since many structures have been changed to match the actual MSDN entries (MASM could not deal with cx in a struct so it was changed to lx, in the headers it is cx to match MSDN)
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable