]> git.cworth.org Git - apitrace/blob - specs/winapi.py
Trace all d3d10.dll functions.
[apitrace] / specs / winapi.py
1 ##########################################################################
2 #
3 # Copyright 2008-2009 VMware, Inc.
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26 """Win32 API type description."""
27
28
29 from stdapi import *
30
31
32 SHORT = Alias("SHORT", Short)
33 USHORT = Alias("USHORT", UShort)
34 INT = Alias("INT", Int)
35 UINT = Alias("UINT", UInt)
36 LONG = Alias("LONG", Long)
37 ULONG = Alias("ULONG", ULong)
38 LONGLONG = Alias("LONGLONG", LongLong)
39 FLOAT = Alias("FLOAT", Float)
40
41 INT8 = Alias("INT8", Int8)
42 UINT8 = Alias("UINT8", UInt8)
43 INT16 = Alias("INT16", Int16)
44 UINT16 = Alias("UINT16", UInt16)
45 INT32 = Alias("INT32", Int32)
46 UINT32 = Alias("UINT32", UInt32)
47 INT64 = Alias("INT64", Int64)
48 UINT64 = Alias("UINT64", UInt64)
49
50 BYTE = Alias("BYTE", UInt8)
51 WORD = Alias("WORD", UInt16)
52 DWORD = Alias("DWORD", UInt32)
53
54 WCHAR = Alias("WCHAR", Short)
55
56 BOOL = Enum("BOOL", [
57     "FALSE",
58     "TRUE",
59 ])
60
61 LPLONG = Pointer(LONG)
62 LPWORD = Pointer(WORD)
63 LPDWORD = Pointer(DWORD)
64 LPBOOL = Pointer(BOOL)
65
66 LPSTR = CString
67 LPCSTR = Const(CString)
68 LPWSTR = WString
69 LPCWSTR = Const(WString)
70
71 LARGE_INTEGER = Struct("LARGE_INTEGER", [
72     (LONGLONG, 'QuadPart'),
73 ])
74
75 SIZE_T = Alias("SIZE_T", SizeT)
76
77 VOID = Void
78 PVOID = OpaquePointer(VOID)
79 LPVOID = PVOID
80 LPCVOID = OpaquePointer(Const(VOID))
81
82 def DECLARE_HANDLE(expr):
83     return Handle(expr, IntPointer(expr))
84
85 HANDLE = DECLARE_HANDLE("HANDLE")
86 HWND = DECLARE_HANDLE("HWND")
87 HDC = DECLARE_HANDLE("HDC")
88 HMONITOR = DECLARE_HANDLE("HMONITOR")
89
90 GUID = Struct("GUID", [
91     (DWORD, "Data1"),
92     (WORD, "Data2"),
93     (WORD, "Data3"),
94     (Array(BYTE, 8), "Data4"),
95 ])
96 LPGUID = Pointer(GUID)
97
98 REFGUID = Alias("REFGUID", Reference(GUID))
99
100 IID = Alias("IID", GUID)
101 REFIID = Alias("REFIID", Reference(IID))
102
103 CLSID = Alias("CLSID", GUID)
104 REFCLSID = Alias("REFCLSID", Reference(CLSID))
105
106 LUID = Struct("LUID", [
107     (DWORD, "LowPart"),
108     (LONG, "HighPart"),
109 ])
110
111 POINT = Struct("POINT", (
112   (LONG, "x"),
113   (LONG, "y"),
114 )) 
115 LPPOINT = Pointer(POINT)
116
117 SIZE = Struct("SIZE", (
118   (LONG, "cx"),
119   (LONG, "cy"),
120 )) 
121 LPSIZE = Pointer(SIZE)
122
123 RECT = Struct("RECT", (
124   (LONG, "left"),
125   (LONG, "top"),
126   (LONG, "right"), 
127   (LONG, "bottom"), 
128 )) 
129 LPRECT = Pointer(RECT)
130
131 PALETTEENTRY = Struct("PALETTEENTRY", (
132   (BYTE, "peRed"),
133   (BYTE, "peGreen"),
134   (BYTE, "peBlue"), 
135   (BYTE, "peFlags"), 
136 )) 
137 LPPALETTEENTRY = Pointer(PALETTEENTRY)
138
139
140 RGNDATAHEADER = Struct("RGNDATAHEADER", [
141     (DWORD, "dwSize"),
142     (DWORD, "iType"),
143     (DWORD, "nCount"),
144     (DWORD, "nRgnSize"),
145     (RECT, "rcBound"),
146 ])
147
148 RGNDATA = Struct("RGNDATA", [
149     (RGNDATAHEADER, "rdh"),
150     #(Char, "Buffer[1]"),
151 ])
152 LPRGNDATA = Pointer(RGNDATA)
153
154 HMODULE = DECLARE_HANDLE("HMODULE")
155
156 FILETIME = Struct("FILETIME", [
157     (DWORD, "dwLowDateTime"),
158     (DWORD, "dwHighDateTime"),
159 ])
160
161 COLORREF = Alias("COLORREF", DWORD)
162
163 LOGFONTW = Struct("LOGFONTW", [
164     (LONG, "lfHeight"),
165     (LONG, "lfWidth"),
166     (LONG, "lfEscapement"),
167     (LONG, "lfOrientation"),
168     (LONG, "lfWeight"),
169     (BYTE, "lfItalic"),
170     (BYTE, "lfUnderline"),
171     (BYTE, "lfStrikeOut"),
172     (BYTE, "lfCharSet"),
173     (BYTE, "lfOutPrecision"),
174     (BYTE, "lfClipPrecision"),
175     (BYTE, "lfQuality"),
176     (BYTE, "lfPitchAndFamily"),
177     (WString, "lfFaceName"),
178 ])
179
180
181 # http://msdn.microsoft.com/en-us/library/ff485842.aspx
182 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx
183 def MAKE_HRESULT(errors, ok = "S_OK", false = "S_FALSE"):
184     values = [ok, false]
185     values.extend(errors)
186     values.extend([
187         "E_PENDING", # 0x8000000A
188         "E_NOTIMPL", # 0x80004001
189         "E_NOINTERFACE", # 0x80004002
190         "E_POINTER", # 0x80004003
191         "E_ABORT", # 0x80004004
192         "E_FAIL", # 0x80004005
193         "E_UNEXPECTED", # 0x8000FFFF
194         "E_ACCESSDENIED", # 0x80070005
195         "E_HANDLE", # 0x80070006
196         "E_OUTOFMEMORY", # 0x8007000E
197         "E_INVALIDARG", # 0x80070057
198     ])
199     return Enum("HRESULT", values)
200
201 HRESULT = MAKE_HRESULT([])
202
203
204 IUnknown = Interface("IUnknown")
205
206 IUnknown.methods = (
207         StdMethod(HRESULT, "QueryInterface", ((REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppvObj"))),
208         StdMethod(ULONG, "AddRef", (), sideeffects=False),
209         StdMethod(ULONG, "Release", ()),
210 )
211
212