This is from Ernie's Accessing COM objects from Assembly. Page 2.
Shouldn't it be AddRef_Proto and Release_Proto! vesa
QueryInterface_Proto typedef PROTO :DWORD, :DWORD, :DWORD AddRef_Pointer typedef PROTO :DWORD Release_Pointer typedef PROTO :DWORD
Sure, it could be. Actually, the order here doesn't matter. It's only the order in the table of functions that's of crutial importance. The entries for this table may be defined in any order. After all, a typedef is not itself code.