X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=specs%2Fwinapi.py;h=031c83475583176465952bba06576f18d735feae;hb=f450d8bfedfcddc318020fd93e306e45848a8702;hp=6fbdfaefb2b90c753c51ebdd978bf7a998ba60a4;hpb=851bbaf879fcd8b1b73777834b069b026f52346f;p=apitrace diff --git a/specs/winapi.py b/specs/winapi.py index 6fbdfae..031c834 100644 --- a/specs/winapi.py +++ b/specs/winapi.py @@ -51,6 +51,7 @@ BYTE = Alias("BYTE", UInt8) WORD = Alias("WORD", UInt16) DWORD = Alias("DWORD", UInt32) +UCHAR = Alias("UCHAR", UChar) WCHAR = Alias("WCHAR", Short) BOOL = Enum("BOOL", [ @@ -64,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'), @@ -75,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)) @@ -150,7 +152,7 @@ RGNDATA = Struct("RGNDATA", [ ]) LPRGNDATA = Pointer(RGNDATA) -HMODULE = DECLARE_HANDLE("HMODULE") +HMODULE = IntPointer("HMODULE") FILETIME = Struct("FILETIME", [ (DWORD, "dwLowDateTime"), @@ -179,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", (), sideeffects=False), + StdMethod(ULONG, "Release", ()), )