logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

wintypes.py (5628B)


  1. # The most useful windows datatypes
  2. import ctypes
  3. BYTE = ctypes.c_byte
  4. WORD = ctypes.c_ushort
  5. DWORD = ctypes.c_ulong
  6. #UCHAR = ctypes.c_uchar
  7. CHAR = ctypes.c_char
  8. WCHAR = ctypes.c_wchar
  9. UINT = ctypes.c_uint
  10. INT = ctypes.c_int
  11. DOUBLE = ctypes.c_double
  12. FLOAT = ctypes.c_float
  13. BOOLEAN = BYTE
  14. BOOL = ctypes.c_long
  15. class VARIANT_BOOL(ctypes._SimpleCData):
  16. _type_ = "v"
  17. def __repr__(self):
  18. return "%s(%r)" % (self.__class__.__name__, self.value)
  19. ULONG = ctypes.c_ulong
  20. LONG = ctypes.c_long
  21. USHORT = ctypes.c_ushort
  22. SHORT = ctypes.c_short
  23. # in the windows header files, these are structures.
  24. _LARGE_INTEGER = LARGE_INTEGER = ctypes.c_longlong
  25. _ULARGE_INTEGER = ULARGE_INTEGER = ctypes.c_ulonglong
  26. LPCOLESTR = LPOLESTR = OLESTR = ctypes.c_wchar_p
  27. LPCWSTR = LPWSTR = ctypes.c_wchar_p
  28. LPCSTR = LPSTR = ctypes.c_char_p
  29. LPCVOID = LPVOID = ctypes.c_void_p
  30. # WPARAM is defined as UINT_PTR (unsigned type)
  31. # LPARAM is defined as LONG_PTR (signed type)
  32. if ctypes.sizeof(ctypes.c_long) == ctypes.sizeof(ctypes.c_void_p):
  33. WPARAM = ctypes.c_ulong
  34. LPARAM = ctypes.c_long
  35. elif ctypes.sizeof(ctypes.c_longlong) == ctypes.sizeof(ctypes.c_void_p):
  36. WPARAM = ctypes.c_ulonglong
  37. LPARAM = ctypes.c_longlong
  38. ATOM = WORD
  39. LANGID = WORD
  40. COLORREF = DWORD
  41. LGRPID = DWORD
  42. LCTYPE = DWORD
  43. LCID = DWORD
  44. ################################################################
  45. # HANDLE types
  46. HANDLE = ctypes.c_void_p # in the header files: void *
  47. HACCEL = HANDLE
  48. HBITMAP = HANDLE
  49. HBRUSH = HANDLE
  50. HCOLORSPACE = HANDLE
  51. HDC = HANDLE
  52. HDESK = HANDLE
  53. HDWP = HANDLE
  54. HENHMETAFILE = HANDLE
  55. HFONT = HANDLE
  56. HGDIOBJ = HANDLE
  57. HGLOBAL = HANDLE
  58. HHOOK = HANDLE
  59. HICON = HANDLE
  60. HINSTANCE = HANDLE
  61. HKEY = HANDLE
  62. HKL = HANDLE
  63. HLOCAL = HANDLE
  64. HMENU = HANDLE
  65. HMETAFILE = HANDLE
  66. HMODULE = HANDLE
  67. HMONITOR = HANDLE
  68. HPALETTE = HANDLE
  69. HPEN = HANDLE
  70. HRGN = HANDLE
  71. HRSRC = HANDLE
  72. HSTR = HANDLE
  73. HTASK = HANDLE
  74. HWINSTA = HANDLE
  75. HWND = HANDLE
  76. SC_HANDLE = HANDLE
  77. SERVICE_STATUS_HANDLE = HANDLE
  78. ################################################################
  79. # Some important structure definitions
  80. class RECT(ctypes.Structure):
  81. _fields_ = [("left", LONG),
  82. ("top", LONG),
  83. ("right", LONG),
  84. ("bottom", LONG)]
  85. tagRECT = _RECTL = RECTL = RECT
  86. class _SMALL_RECT(ctypes.Structure):
  87. _fields_ = [('Left', SHORT),
  88. ('Top', SHORT),
  89. ('Right', SHORT),
  90. ('Bottom', SHORT)]
  91. SMALL_RECT = _SMALL_RECT
  92. class _COORD(ctypes.Structure):
  93. _fields_ = [('X', SHORT),
  94. ('Y', SHORT)]
  95. class POINT(ctypes.Structure):
  96. _fields_ = [("x", LONG),
  97. ("y", LONG)]
  98. tagPOINT = _POINTL = POINTL = POINT
  99. class SIZE(ctypes.Structure):
  100. _fields_ = [("cx", LONG),
  101. ("cy", LONG)]
  102. tagSIZE = SIZEL = SIZE
  103. def RGB(red, green, blue):
  104. return red + (green << 8) + (blue << 16)
  105. class FILETIME(ctypes.Structure):
  106. _fields_ = [("dwLowDateTime", DWORD),
  107. ("dwHighDateTime", DWORD)]
  108. _FILETIME = FILETIME
  109. class MSG(ctypes.Structure):
  110. _fields_ = [("hWnd", HWND),
  111. ("message", UINT),
  112. ("wParam", WPARAM),
  113. ("lParam", LPARAM),
  114. ("time", DWORD),
  115. ("pt", POINT)]
  116. tagMSG = MSG
  117. MAX_PATH = 260
  118. class WIN32_FIND_DATAA(ctypes.Structure):
  119. _fields_ = [("dwFileAttributes", DWORD),
  120. ("ftCreationTime", FILETIME),
  121. ("ftLastAccessTime", FILETIME),
  122. ("ftLastWriteTime", FILETIME),
  123. ("nFileSizeHigh", DWORD),
  124. ("nFileSizeLow", DWORD),
  125. ("dwReserved0", DWORD),
  126. ("dwReserved1", DWORD),
  127. ("cFileName", CHAR * MAX_PATH),
  128. ("cAlternateFileName", CHAR * 14)]
  129. class WIN32_FIND_DATAW(ctypes.Structure):
  130. _fields_ = [("dwFileAttributes", DWORD),
  131. ("ftCreationTime", FILETIME),
  132. ("ftLastAccessTime", FILETIME),
  133. ("ftLastWriteTime", FILETIME),
  134. ("nFileSizeHigh", DWORD),
  135. ("nFileSizeLow", DWORD),
  136. ("dwReserved0", DWORD),
  137. ("dwReserved1", DWORD),
  138. ("cFileName", WCHAR * MAX_PATH),
  139. ("cAlternateFileName", WCHAR * 14)]
  140. ################################################################
  141. # Pointer types
  142. LPBOOL = PBOOL = ctypes.POINTER(BOOL)
  143. PBOOLEAN = ctypes.POINTER(BOOLEAN)
  144. LPBYTE = PBYTE = ctypes.POINTER(BYTE)
  145. PCHAR = ctypes.POINTER(CHAR)
  146. LPCOLORREF = ctypes.POINTER(COLORREF)
  147. LPDWORD = PDWORD = ctypes.POINTER(DWORD)
  148. LPFILETIME = PFILETIME = ctypes.POINTER(FILETIME)
  149. PFLOAT = ctypes.POINTER(FLOAT)
  150. LPHANDLE = PHANDLE = ctypes.POINTER(HANDLE)
  151. PHKEY = ctypes.POINTER(HKEY)
  152. LPHKL = ctypes.POINTER(HKL)
  153. LPINT = PINT = ctypes.POINTER(INT)
  154. PLARGE_INTEGER = ctypes.POINTER(LARGE_INTEGER)
  155. PLCID = ctypes.POINTER(LCID)
  156. LPLONG = PLONG = ctypes.POINTER(LONG)
  157. LPMSG = PMSG = ctypes.POINTER(MSG)
  158. LPPOINT = PPOINT = ctypes.POINTER(POINT)
  159. PPOINTL = ctypes.POINTER(POINTL)
  160. LPRECT = PRECT = ctypes.POINTER(RECT)
  161. LPRECTL = PRECTL = ctypes.POINTER(RECTL)
  162. LPSC_HANDLE = ctypes.POINTER(SC_HANDLE)
  163. PSHORT = ctypes.POINTER(SHORT)
  164. LPSIZE = PSIZE = ctypes.POINTER(SIZE)
  165. LPSIZEL = PSIZEL = ctypes.POINTER(SIZEL)
  166. PSMALL_RECT = ctypes.POINTER(SMALL_RECT)
  167. LPUINT = PUINT = ctypes.POINTER(UINT)
  168. PULARGE_INTEGER = ctypes.POINTER(ULARGE_INTEGER)
  169. PULONG = ctypes.POINTER(ULONG)
  170. PUSHORT = ctypes.POINTER(USHORT)
  171. PWCHAR = ctypes.POINTER(WCHAR)
  172. LPWIN32_FIND_DATAA = PWIN32_FIND_DATAA = ctypes.POINTER(WIN32_FIND_DATAA)
  173. LPWIN32_FIND_DATAW = PWIN32_FIND_DATAW = ctypes.POINTER(WIN32_FIND_DATAW)
  174. LPWORD = PWORD = ctypes.POINTER(WORD)