blob: 8f96799e7c9a4aaeb32b3713d3d462d14851ffc1 [file] [log] [blame]
José Fonseca7ad40262009-09-30 17:17:12 +01001##########################################################################
José Fonseca95442442008-07-08 10:32:53 +09002#
José Fonseca7ad40262009-09-30 17:17:12 +01003# Copyright 2008-2009 VMware, Inc.
4# All Rights Reserved.
José Fonseca95442442008-07-08 10:32:53 +09005#
José Fonseca7ad40262009-09-30 17:17:12 +01006# 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:
José Fonseca95442442008-07-08 10:32:53 +090012#
José Fonseca7ad40262009-09-30 17:17:12 +010013# The above copyright notice and this permission notice shall be included in
14# all copies or substantial portions of the Software.
José Fonseca95442442008-07-08 10:32:53 +090015#
José Fonseca7ad40262009-09-30 17:17:12 +010016# 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.
José Fonseca95442442008-07-08 10:32:53 +090023#
José Fonseca7ad40262009-09-30 17:17:12 +010024##########################################################################/
José Fonseca95442442008-07-08 10:32:53 +090025
José Fonsecaf20c1262010-11-25 11:39:57 +000026"""Win32 API type description."""
José Fonsecad626cf42008-07-07 07:43:16 +090027
José Fonseca9796b842010-11-25 11:44:50 +000028from stdapi import *
José Fonsecad626cf42008-07-07 07:43:16 +090029
José Fonseca51c1ef82010-11-15 16:09:14 +000030SHORT = Alias("SHORT", Short)
31USHORT = Alias("USHORT", UShort)
32INT = Alias("INT", Int)
33UINT = Alias("UINT", UInt)
34LONG = Alias("LONG", Long)
35ULONG = Alias("ULONG", ULong)
36LONGLONG = Alias("LONGLONG", LongLong)
37FLOAT = Alias("FLOAT", Float)
José Fonseca73f33cc2008-07-09 02:17:51 +090038
José Fonsecaaf7d2312011-07-07 10:16:57 +010039INT8 = Alias("INT8", Int8)
40UINT8 = Alias("UINT8", UInt8)
41INT16 = Alias("INT16", Int16)
42UINT16 = Alias("UINT16", UInt16)
43INT32 = Alias("INT32", Int32)
44UINT32 = Alias("UINT32", UInt32)
45INT64 = Alias("INT64", Int64)
46UINT64 = Alias("UINT64", UInt64)
José Fonsecad626cf42008-07-07 07:43:16 +090047
José Fonseca74163462011-10-15 11:21:15 +010048BYTE = Alias("BYTE", UInt8)
49WORD = Alias("WORD", UInt16)
50DWORD = Alias("DWORD", UInt32)
José Fonsecad626cf42008-07-07 07:43:16 +090051
José Fonsecaaf7d2312011-07-07 10:16:57 +010052WCHAR = Literal("WCHAR", "SInt")
José Fonseca8384ccb2011-05-25 10:12:02 +010053
José Fonseca51c1ef82010-11-15 16:09:14 +000054BOOL = Alias("BOOL", Bool)
José Fonsecad626cf42008-07-07 07:43:16 +090055
José Fonsecac569f872009-01-04 16:45:17 +000056LPLONG = Pointer(LONG)
57LPWORD = Pointer(WORD)
58LPDWORD = Pointer(DWORD)
59LPBOOL = Pointer(BOOL)
José Fonsecac569f872009-01-04 16:45:17 +000060
José Fonseca5f81c3a2010-11-24 08:42:22 +000061LPSTR = CString
62LPCSTR = Const(CString)
José Fonsecae54e4112009-06-25 13:56:18 +010063LPWSTR = WString
José Fonseca44eaac92009-06-30 19:48:50 +010064LPCWSTR = Const(WString)
José Fonsecac569f872009-01-04 16:45:17 +000065
José Fonseca51c1ef82010-11-15 16:09:14 +000066LARGE_INTEGER = Struct("LARGE_INTEGER", [
67 (LONGLONG, 'QuadPart'),
68])
69
José Fonseca0b8fea12009-09-28 11:33:36 +010070SIZE_T = Alias("SIZE_T", SizeT)
José Fonsecad626cf42008-07-07 07:43:16 +090071
72HRESULT = Alias("HRESULT", Int)
73
José Fonsecae02bb2a2010-11-24 16:19:16 +000074VOID = Void
José Fonsecaf6592d72010-11-21 12:44:41 +000075PVOID = Opaque("PVOID")
José Fonsecac569f872009-01-04 16:45:17 +000076LPVOID = PVOID
José Fonsecaf6592d72010-11-21 12:44:41 +000077HANDLE = Opaque("HANDLE")
78HWND = Opaque("HWND")
79HDC = Opaque("HDC")
80HMONITOR = Opaque("HMONITOR")
José Fonsecad626cf42008-07-07 07:43:16 +090081
José Fonseca8a56d142008-07-09 12:18:08 +090082GUID = Struct("GUID", [
83 (DWORD, "Data1"),
84 (WORD, "Data2"),
85 (WORD, "Data3"),
José Fonseca44756652011-10-15 10:26:30 +010086 (Array(BYTE, 8), "Data4"),
José Fonseca8a56d142008-07-09 12:18:08 +090087])
José Fonsecac569f872009-01-04 16:45:17 +000088LPGUID = Pointer(GUID)
José Fonseca8a56d142008-07-09 12:18:08 +090089
90#REFGUID = Alias("REFGUID", Pointer(GUID))
91REFGUID = Alias("REFGUID", GUID)
92
93IID = Alias("IID", GUID)
94#REFIID = Alias("REFIID", Pointer(IID))
95REFIID = Alias("REFIID", IID)
96
José Fonsecac569f872009-01-04 16:45:17 +000097CLSID = Alias("CLSID", GUID)
98#REFCLSID = Alias("REFCLSID", Pointer(CLSID))
99REFCLSID = Alias("REFCLSID", CLSID)
100
José Fonseca8a56d142008-07-09 12:18:08 +0900101LUID = Struct("LUID", [
102 (DWORD, "LowPart"),
103 (LONG, "HighPart"),
104])
José Fonsecad626cf42008-07-07 07:43:16 +0900105
106POINT = Struct("POINT", (
107 (LONG, "x"),
108 (LONG, "y"),
109))
José Fonsecac569f872009-01-04 16:45:17 +0000110LPPOINT = Pointer(POINT)
José Fonsecad626cf42008-07-07 07:43:16 +0900111
José Fonseca8384ccb2011-05-25 10:12:02 +0100112SIZE = Struct("SIZE", (
113 (LONG, "cx"),
114 (LONG, "cy"),
115))
116LPSIZE = Pointer(SIZE)
117
José Fonsecad626cf42008-07-07 07:43:16 +0900118RECT = Struct("RECT", (
119 (LONG, "left"),
120 (LONG, "top"),
121 (LONG, "right"),
122 (LONG, "bottom"),
123))
José Fonsecac569f872009-01-04 16:45:17 +0000124LPRECT = Pointer(RECT)
José Fonsecad626cf42008-07-07 07:43:16 +0900125
126PALETTEENTRY = Struct("PALETTEENTRY", (
127 (BYTE, "peRed"),
128 (BYTE, "peGreen"),
129 (BYTE, "peBlue"),
130 (BYTE, "peFlags"),
131))
José Fonsecac569f872009-01-04 16:45:17 +0000132LPPALETTEENTRY = Pointer(PALETTEENTRY)
José Fonsecad626cf42008-07-07 07:43:16 +0900133
José Fonseca8a56d142008-07-09 12:18:08 +0900134
135RGNDATAHEADER = Struct("RGNDATAHEADER", [
136 (DWORD, "dwSize"),
137 (DWORD, "iType"),
138 (DWORD, "nCount"),
139 (DWORD, "nRgnSize"),
140 (RECT, "rcBound"),
141])
142
143RGNDATA = Struct("RGNDATA", [
144 (RGNDATAHEADER, "rdh"),
145 #(Char, "Buffer[1]"),
146])
José Fonsecac569f872009-01-04 16:45:17 +0000147LPRGNDATA = Pointer(RGNDATA)
José Fonsecad626cf42008-07-07 07:43:16 +0900148
José Fonseca31524192010-11-22 21:05:26 +0000149HMODULE = Opaque("HMODULE")
José Fonsecad626cf42008-07-07 07:43:16 +0900150
151IUnknown = Interface("IUnknown")
152
José Fonsecabb8760b2011-05-25 23:21:18 +0100153HRESULT_com = FakeEnum(HRESULT, [
154 "S_OK",
155 "E_NOINTERFACE",
156 "E_POINTER",
157])
158
José Fonsecad626cf42008-07-07 07:43:16 +0900159IUnknown.methods = (
José Fonsecabb8760b2011-05-25 23:21:18 +0100160 Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppvObj"))),
José Fonsecad626cf42008-07-07 07:43:16 +0900161 Method(ULONG, "AddRef", ()),
162 Method(ULONG, "Release", ()),
163)
164
165