X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=specs%2Fwinapi.py;h=409054d12775fb333bcd469407f2af6308a4e96c;hb=d93791ef6ea04f6ab5bce29aacff74e75b4035a5;hp=a7556e714fd45fc1513333c182ce36934156657a;hpb=7f3688bb956928bfef266ebbe0b3ccbf6e984559;p=apitrace diff --git a/specs/winapi.py b/specs/winapi.py index a7556e7..409054d 100644 --- a/specs/winapi.py +++ b/specs/winapi.py @@ -25,8 +25,10 @@ """Win32 API type description.""" + from stdapi import * + SHORT = Alias("SHORT", Short) USHORT = Alias("USHORT", UShort) INT = Alias("INT", Int) @@ -51,7 +53,10 @@ DWORD = Alias("DWORD", UInt32) WCHAR = Alias("WCHAR", Short) -BOOL = Alias("BOOL", Bool) +BOOL = Enum("BOOL", [ + "FALSE", + "TRUE", +]) LPLONG = Pointer(LONG) LPWORD = Pointer(WORD) @@ -69,10 +74,8 @@ LARGE_INTEGER = Struct("LARGE_INTEGER", [ SIZE_T = Alias("SIZE_T", SizeT) -HRESULT = Alias("HRESULT", Int) - VOID = Void -PVOID = Opaque("PVOID") +PVOID = OpaquePointer(VOID) LPVOID = PVOID def DECLARE_HANDLE(expr): @@ -149,8 +152,6 @@ LPRGNDATA = Pointer(RGNDATA) HMODULE = DECLARE_HANDLE("HMODULE") -IUnknown = Interface("IUnknown") - FILETIME = Struct("FILETIME", [ (DWORD, "dwLowDateTime"), (DWORD, "dwHighDateTime"), @@ -175,15 +176,35 @@ LOGFONTW = Struct("LOGFONTW", [ (WString, "lfFaceName"), ]) -HRESULT_com = FakeEnum(HRESULT, [ - "S_OK", - "E_NOINTERFACE", - "E_POINTER", -]) + +# http://msdn.microsoft.com/en-us/library/ff485842.aspx +# http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx +def MAKE_HRESULT(errors, ok = "S_OK", false = "S_FALSE"): + values = [ok, false] + values.extend(errors) + values.extend([ + "E_PENDING", # 0x8000000A + "E_NOTIMPL", # 0x80004001 + "E_NOINTERFACE", # 0x80004002 + "E_POINTER", # 0x80004003 + "E_ABORT", # 0x80004004 + "E_FAIL", # 0x80004005 + "E_UNEXPECTED", # 0x8000FFFF + "E_ACCESSDENIED", # 0x80070005 + "E_HANDLE", # 0x80070006 + "E_OUTOFMEMORY", # 0x8007000E + "E_INVALIDARG", # 0x80070057 + ]) + return Enum("HRESULT", values) + +HRESULT = MAKE_HRESULT([]) + + +IUnknown = Interface("IUnknown") IUnknown.methods = ( - Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppvObj"))), - Method(ULONG, "AddRef", ()), + Method(HRESULT, "QueryInterface", ((REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppvObj"))), + Method(ULONG, "AddRef", (), sideeffects=False), Method(ULONG, "Release", ()), )