X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=specs%2Fwinapi.py;h=4436c6ddb971d494329db0e1a2dd1f9d7b798407;hb=a936afc3ebb349c3aec8b5a595706f3c9749ad37;hp=ea9252f3c20777da642ce59539cc9d6370ab2419;hpb=9a3468aaaab098377a39b8f2ab4649be4b028971;p=apitrace diff --git a/specs/winapi.py b/specs/winapi.py index ea9252f..4436c6d 100644 --- a/specs/winapi.py +++ b/specs/winapi.py @@ -51,9 +51,13 @@ BYTE = Alias("BYTE", UInt8) WORD = Alias("WORD", UInt16) DWORD = Alias("DWORD", UInt32) +UCHAR = Alias("UCHAR", UChar) WCHAR = Alias("WCHAR", Short) -BOOL = Alias("BOOL", Bool) +BOOL = Enum("BOOL", [ + "FALSE", + "TRUE", +]) LPLONG = Pointer(LONG) LPWORD = Pointer(WORD) @@ -61,9 +65,9 @@ LPDWORD = Pointer(DWORD) LPBOOL = Pointer(BOOL) LPSTR = CString -LPCSTR = Const(CString) +LPCSTR = ConstCString LPWSTR = WString -LPCWSTR = Const(WString) +LPCWSTR = ConstWString LARGE_INTEGER = Struct("LARGE_INTEGER", [ (LONGLONG, 'QuadPart'), @@ -72,8 +76,9 @@ LARGE_INTEGER = Struct("LARGE_INTEGER", [ SIZE_T = Alias("SIZE_T", SizeT) VOID = Void -PVOID = Opaque("PVOID") +PVOID = OpaquePointer(VOID) LPVOID = PVOID +LPCVOID = OpaquePointer(Const(VOID)) def DECLARE_HANDLE(expr): return Handle(expr, IntPointer(expr)) @@ -147,7 +152,7 @@ RGNDATA = Struct("RGNDATA", [ ]) LPRGNDATA = Pointer(RGNDATA) -HMODULE = DECLARE_HANDLE("HMODULE") +HMODULE = IntPointer("HMODULE") FILETIME = Struct("FILETIME", [ (DWORD, "dwLowDateTime"), @@ -176,29 +181,33 @@ LOGFONTW = Struct("LOGFONTW", [ # http://msdn.microsoft.com/en-us/library/ff485842.aspx # http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx -HRESULT = Enum("HRESULT", [ - "S_OK", # 0x0 - "S_FALSE", # 0x1 - "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 -]) +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, "QueryInterface", ((REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppvObj"))), - Method(ULONG, "AddRef", ()), - Method(ULONG, "Release", ()), + StdMethod(HRESULT, "QueryInterface", ((REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppvObj"))), + StdMethod(ULONG, "AddRef", ()), + StdMethod(ULONG, "Release", ()), )