win-ffi 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/lib/win-ffi/enums/comdlg32/find_replace.rb +27 -27
  3. data/lib/win-ffi/enums/comdlg32/font.rb +32 -32
  4. data/lib/win-ffi/enums/system_info.rb +53 -53
  5. data/lib/win-ffi/enums/user32/pointer_flags.rb +81 -81
  6. data/lib/win-ffi/functions/advapi32/process.rb +32 -32
  7. data/lib/win-ffi/functions/advapi32/system_info.rb +16 -16
  8. data/lib/win-ffi/functions/comdlg32.rb +6 -6
  9. data/lib/win-ffi/functions/comdlg32/error.rb +5 -5
  10. data/lib/win-ffi/functions/comdlg32/find_replace.rb +9 -9
  11. data/lib/win-ffi/functions/msvcrt/handle.rb +12 -12
  12. data/lib/win-ffi/functions/ntdll/system_info.rb +13 -13
  13. data/lib/win-ffi/functions/secur32/system_info.rb +29 -29
  14. data/lib/win-ffi/functions/thread.rb +229 -229
  15. data/lib/win-ffi/functions/user32/cursor.rb +2 -0
  16. data/lib/win-ffi/functions/user32/mouse.rb +1 -1
  17. data/lib/win-ffi/functions/user32/window/window.rb +12 -11
  18. data/lib/win-ffi/functions/winmm.rb +546 -546
  19. data/lib/win-ffi/functions/wtsapi32/process.rb +11 -11
  20. data/lib/win-ffi/struct.rb +15 -15
  21. data/lib/win-ffi/structs/comdlg32/choose_color.rb +22 -22
  22. data/lib/win-ffi/structs/comdlg32/choose_font.rb +27 -27
  23. data/lib/win-ffi/structs/comdlg32/find_replace.rb +23 -23
  24. data/lib/win-ffi/structs/gdi32/abc.rb +8 -8
  25. data/lib/win-ffi/structs/gdi32/abcfloat.rb +10 -10
  26. data/lib/win-ffi/structs/gdi32/bitmap.rb +12 -12
  27. data/lib/win-ffi/structs/gdi32/bitmap_info.rb +10 -10
  28. data/lib/win-ffi/structs/gdi32/bitmap_info_header.rb +16 -16
  29. data/lib/win-ffi/structs/gdi32/blend_function.rb +9 -9
  30. data/lib/win-ffi/structs/gdi32/display_device.rb +11 -11
  31. data/lib/win-ffi/structs/gdi32/handle_table.rb +6 -6
  32. data/lib/win-ffi/structs/gdi32/kerning_pair.rb +8 -8
  33. data/lib/win-ffi/structs/gdi32/log_brush.rb +10 -10
  34. data/lib/win-ffi/structs/gdi32/meta_file_pict.rb +9 -9
  35. data/lib/win-ffi/structs/gdi32/palette_entry.rb +9 -9
  36. data/lib/win-ffi/structs/gdi32/pixel_format_descriptor.rb +56 -56
  37. data/lib/win-ffi/structs/gdi32/rgb_quad.rb +9 -9
  38. data/lib/win-ffi/structs/os_version_info.rb +9 -9
  39. data/lib/win-ffi/structs/point.rb +9 -9
  40. data/lib/win-ffi/structs/rect.rb +41 -27
  41. data/lib/win-ffi/structs/size.rb +5 -5
  42. data/lib/win-ffi/structs/user32/controls/combobox_info.rb +14 -12
  43. data/lib/win-ffi/structs/user32/controls/scroll_info.rb +12 -12
  44. data/lib/win-ffi/structs/user32/controls/scrollbar_info.rb +14 -12
  45. data/lib/win-ffi/structs/user32/cursor_info.rb +11 -9
  46. data/lib/win-ffi/structs/user32/display_device.rb +11 -11
  47. data/lib/win-ffi/structs/user32/draw_text_params.rb +10 -10
  48. data/lib/win-ffi/structs/user32/icon_info.rb +10 -10
  49. data/lib/win-ffi/structs/user32/icon_info_ex.rb +14 -14
  50. data/lib/win-ffi/structs/user32/last_input_info.rb +7 -7
  51. data/lib/win-ffi/structs/user32/mouse_move_point.rb +9 -9
  52. data/lib/win-ffi/structs/user32/msg.rb +18 -16
  53. data/lib/win-ffi/structs/user32/pointer_info.rb +24 -24
  54. data/lib/win-ffi/structs/user32/pointer_pen_info.rb +18 -18
  55. data/lib/win-ffi/structs/user32/pointer_touch_info.rb +18 -17
  56. data/lib/win-ffi/structs/user32/raw_input_device_list.rb +9 -9
  57. data/lib/win-ffi/structs/user32/raw_input_header.rb +9 -9
  58. data/lib/win-ffi/structs/user32/touch_hit_testing_input.rb +13 -10
  59. data/lib/win-ffi/structs/user32/touch_hit_testing_proximity_evaluation.rb +9 -7
  60. data/lib/win-ffi/structs/user32/track_mouse_event.rb +9 -9
  61. data/lib/win-ffi/structs/user32/window/alt_tab_info.rb +17 -17
  62. data/lib/win-ffi/structs/user32/window/bs_info.rb +11 -11
  63. data/lib/win-ffi/structs/user32/window/dlg_template.rb +13 -13
  64. data/lib/win-ffi/structs/user32/window/flashw_info.rb +1 -1
  65. data/lib/win-ffi/structs/user32/window/gui_thread_info.rb +17 -17
  66. data/lib/win-ffi/structs/user32/window/luid.rb +7 -7
  67. data/lib/win-ffi/structs/user32/window/menu_info.rb +12 -12
  68. data/lib/win-ffi/structs/user32/window/menu_item_info.rb +17 -17
  69. data/lib/win-ffi/structs/user32/window/menu_item_template.rb +8 -8
  70. data/lib/win-ffi/structs/user32/window/menubar_info.rb +13 -11
  71. data/lib/win-ffi/structs/user32/window/msgbox_params.rb +15 -15
  72. data/lib/win-ffi/structs/user32/window/title_bar_info.rb +3 -1
  73. data/lib/win-ffi/structs/user32/window/tpm_params.rb +9 -7
  74. data/lib/win-ffi/structs/user32/window/update_layered_window_info.rb +21 -21
  75. data/lib/win-ffi/structs/user32/window/window_placement.rb +32 -32
  76. data/lib/win-ffi/structs/user32/window/window_pos.rb +46 -46
  77. data/lib/win-ffi/version.rb +1 -1
  78. metadata +5 -6
@@ -1,17 +1,17 @@
1
- module WinFFI
2
- module Advapi32
3
- extend LibBase
4
-
5
- ffi_lib 'advapi32'
6
-
7
- #BOOL WINAPI GetCurrentHwProfile( _Out_ LPHW_PROFILE_INFO lpHwProfileInfo )
8
- attach_function 'GetCurrentHwProfileA', [:pointer], :bool
9
- attach_function 'GetCurrentHwProfileW', [:pointer], :bool
10
-
11
- #BOOL WINAPI GetUserName(
12
- # _Out_ LPTSTR lpBuffer,
13
- # _Inout_ LPDWORD lpnSize )
14
- attach_function 'GetUserNameA', [:pointer, :pointer], :bool
15
- attach_function 'GetUserNameW', [:pointer, :pointer], :bool
16
- end
1
+ module WinFFI
2
+ module Advapi32
3
+ extend LibBase
4
+
5
+ ffi_lib 'advapi32'
6
+
7
+ #BOOL WINAPI GetCurrentHwProfile( _Out_ LPHW_PROFILE_INFO lpHwProfileInfo )
8
+ attach_function 'GetCurrentHwProfileA', [:pointer], :bool
9
+ attach_function 'GetCurrentHwProfileW', [:pointer], :bool
10
+
11
+ #BOOL WINAPI GetUserName(
12
+ # _Out_ LPTSTR lpBuffer,
13
+ # _Inout_ LPDWORD lpnSize )
14
+ attach_function 'GetUserNameA', [:pointer, :pointer], :bool
15
+ attach_function 'GetUserNameW', [:pointer, :pointer], :bool
16
+ end
17
17
  end
@@ -1,7 +1,7 @@
1
- module WinFFI
2
- module Comdlg32
3
- extend LibBase
4
-
5
- ffi_lib 'Comdlg32'
6
- end
1
+ module WinFFI
2
+ module Comdlg32
3
+ extend LibBase
4
+
5
+ ffi_lib 'Comdlg32'
6
+ end
7
7
  end
@@ -1,6 +1,6 @@
1
- module WinFFI
2
- module Comdlg32
3
- #DWORD WINAPI CommDlgExtendedError(void)
4
- attach_function 'CommDlgExtendedError', [], :dword
5
- end
1
+ module WinFFI
2
+ module Comdlg32
3
+ #DWORD WINAPI CommDlgExtendedError(void)
4
+ attach_function 'CommDlgExtendedError', [], :dword
5
+ end
6
6
  end
@@ -1,9 +1,9 @@
1
- module WinFFI
2
- module Comdlg32
3
- #HWND WINAPI FindText( _In_ LPFINDREPLACE lpfr )
4
- attach_function 'FindText', :FindTextA, [:pointer], :pointer
5
-
6
- #HWND WINAPI ReplaceText( _Inout_ LPFINDREPLACE lpfr )
7
- attach_function 'ReplaceText', :ReplaceTextA, [:pointer], :pointer
8
- end
9
- end
1
+ module WinFFI
2
+ module Comdlg32
3
+ #HWND WINAPI FindText( _In_ LPFINDREPLACE lpfr )
4
+ attach_function 'FindText', :FindTextA, [:pointer], :pointer
5
+
6
+ #HWND WINAPI ReplaceText( _Inout_ LPFINDREPLACE lpfr )
7
+ attach_function 'ReplaceText', :ReplaceTextA, [:pointer], :pointer
8
+ end
9
+ end
@@ -1,13 +1,13 @@
1
- module WinFFI
2
- module Msvcrt
3
- ffi_lib 'msvcrt'
4
-
5
- #intptr_t _get_osfhandle( int fd )
6
- attach_function '_get_osfhandle', [:int], :long
7
-
8
- #int _open_osfhandle (
9
- # intptr_t osfhandle,
10
- # int flags )
11
- attach_function '_open_osfhandle', [:long, :int], :int
12
- end
1
+ module WinFFI
2
+ module Msvcrt
3
+ ffi_lib 'msvcrt'
4
+
5
+ #intptr_t _get_osfhandle( int fd )
6
+ attach_function '_get_osfhandle', [:int], :long
7
+
8
+ #int _open_osfhandle (
9
+ # intptr_t osfhandle,
10
+ # int flags )
11
+ attach_function '_open_osfhandle', [:long, :int], :int
12
+ end
13
13
  end
@@ -1,14 +1,14 @@
1
- module WinFFI
2
- module Ntdll
3
- extend LibBase
4
-
5
- ffi_lib 'Ntdll'
6
-
7
- #NTSTATUS WINAPI NtQuerySystemInformation(
8
- # _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
9
- # _Inout_ PVOID SystemInformation,
10
- # _In_ ULONG SystemInformationLength,
11
- # _Out_opt_ PULONG ReturnLength )
12
- attach_function 'NtQuerySystemInformation', [:pointer, :pointer, :ulong, :pointer], :int
13
- end
1
+ module WinFFI
2
+ module Ntdll
3
+ extend LibBase
4
+
5
+ ffi_lib 'Ntdll'
6
+
7
+ #NTSTATUS WINAPI NtQuerySystemInformation(
8
+ # _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
9
+ # _Inout_ PVOID SystemInformation,
10
+ # _In_ ULONG SystemInformationLength,
11
+ # _Out_opt_ PULONG ReturnLength )
12
+ attach_function 'NtQuerySystemInformation', [:pointer, :pointer, :ulong, :pointer], :int
13
+ end
14
14
  end
@@ -1,30 +1,30 @@
1
- module WinFII
2
- module Secur32
3
- extend LibBase
4
-
5
- ffi_lib 'secur32'
6
-
7
- #BOOLEAN WINAPI GetComputerObjectName(
8
- # _In_ EXTENDED_NAME_FORMAT NameFormat,
9
- # _Out_ LPTSTR lpNameBuffer,
10
- # _Inout_ PULONG lpnSize )
11
- attach_function 'GetComputerObjectNameA', [ExtendedNameFormat ,:pointer, :pointer], :bool
12
- attach_function 'GetComputerObjectNameW', [ExtendedNameFormat ,:pointer, :pointer], :bool
13
-
14
- #BOOLEAN WINAPI GetUserNameEx(
15
- # _In_ EXTENDED_NAME_FORMAT NameFormat,
16
- # _Out_ LPTSTR lpNameBuffer,
17
- # _Inout_ PULONG lpnSize )
18
- attach_function 'GetUserNameExA', [ExtendedNameFormat, :pointer, :pointer], :bool
19
- attach_function 'GetUserNameExW', [ExtendedNameFormat, :pointer, :pointer], :bool
20
-
21
- #BOOLEAN WINAPI TranslateName(
22
- # _In_ LPCTSTR lpAccountName,
23
- # _In_ EXTENDED_NAME_FORMAT AccountNameFormat,
24
- # _In_ EXTENDED_NAME_FORMAT DesiredNameFormat,
25
- # _Out_ LPTSTR lpTranslatedName,
26
- # _Inout_ PULONG nSize )
27
- attach_function 'TranslateNameA', [:string, ExtendedNameFormat, ExtendedNameFormat, :string, :pointer], :bool
28
- attach_function 'TranslateNameW', [:string, ExtendedNameFormat, ExtendedNameFormat, :string, :pointer], :bool
29
- end
1
+ module WinFII
2
+ module Secur32
3
+ extend LibBase
4
+
5
+ ffi_lib 'secur32'
6
+
7
+ #BOOLEAN WINAPI GetComputerObjectName(
8
+ # _In_ EXTENDED_NAME_FORMAT NameFormat,
9
+ # _Out_ LPTSTR lpNameBuffer,
10
+ # _Inout_ PULONG lpnSize )
11
+ attach_function 'GetComputerObjectNameA', [ExtendedNameFormat ,:pointer, :pointer], :bool
12
+ attach_function 'GetComputerObjectNameW', [ExtendedNameFormat ,:pointer, :pointer], :bool
13
+
14
+ #BOOLEAN WINAPI GetUserNameEx(
15
+ # _In_ EXTENDED_NAME_FORMAT NameFormat,
16
+ # _Out_ LPTSTR lpNameBuffer,
17
+ # _Inout_ PULONG lpnSize )
18
+ attach_function 'GetUserNameExA', [ExtendedNameFormat, :pointer, :pointer], :bool
19
+ attach_function 'GetUserNameExW', [ExtendedNameFormat, :pointer, :pointer], :bool
20
+
21
+ #BOOLEAN WINAPI TranslateName(
22
+ # _In_ LPCTSTR lpAccountName,
23
+ # _In_ EXTENDED_NAME_FORMAT AccountNameFormat,
24
+ # _In_ EXTENDED_NAME_FORMAT DesiredNameFormat,
25
+ # _Out_ LPTSTR lpTranslatedName,
26
+ # _Inout_ PULONG nSize )
27
+ attach_function 'TranslateNameA', [:string, ExtendedNameFormat, ExtendedNameFormat, :string, :pointer], :bool
28
+ attach_function 'TranslateNameW', [:string, ExtendedNameFormat, ExtendedNameFormat, :string, :pointer], :bool
29
+ end
30
30
  end
@@ -1,230 +1,230 @@
1
- module WinFFI
2
- module Thread
3
- extend LibBase
4
-
5
- SYNCHRONIZE = 0x00100000
6
- THREAD_ALL_ACCESS = 0x1F03FF
7
- THREAD_DIRECT_IMPERSONATION = 0x0200
8
- THREAD_GET_CONTEXT = 0x0008
9
- THREAD_IMPERSONATE = 0x0100
10
- THREAD_QUERY_INFORMATION = 0x0040
11
- THREAD_SET_CONTEXT = 0x0010
12
- THREAD_SET_INFORMATION = 0x0020
13
- THREAD_SET_THREAD_TOKEN = 0x0080
14
- THREAD_SUSPEND_RESUME = 0x0002
15
- THREAD_TERMINATE = 0x0001
16
-
17
- THREAD_PRIORITY_ABOVE_NORMAL = 1
18
- THREAD_PRIORITY_BELOW_NORMAL = -1
19
- THREAD_PRIORITY_HIGHEST = 2
20
- THREAD_PRIORITY_IDLE = -15
21
- THREAD_PRIORITY_LOWEST = -2
22
- THREAD_PRIORITY_NORMAL = 0
23
- THREAD_PRIORITY_TIME_CRITICAL = 15
24
-
25
- if WindowsVersion >= 7
26
-
27
- ffi_lib 'Avrt'
28
-
29
- #BOOL WINAPI AvRevertMmThreadCharacteristics( _In_ HANDLE AvrtHandle )
30
- attach_function 'AvRevertMmThreadCharacteristics', [:handle], :bool
31
-
32
- #BOOL WINAPI AvRtCreateThreadOrderingGroup(
33
- # _Out_ PHANDLE Context,
34
- # _In_ PLARGE_INTEGER Period,
35
- # _Inout_ GUID *ThreadOrderingGuid,
36
- # _In_opt_ PLARGE_INTEGER Timeout )
37
- attach_function 'AvRtCreateThreadOrderingGroup', [:pointer, :pointer, :pointer, :pointer], :bool
38
-
39
- #BOOL WINAPI AvRtCreateThreadOrderingGroupEx(
40
- # _Out_ PHANDLE Context,
41
- # _In_ PLARGE_INTEGER Period,
42
- # _Inout_ GUID *ThreadOrderingGuid,
43
- # _In_opt_ PLARGE_INTEGER Timeout,
44
- # _In_ LPCTSTR TaskName )
45
- attach_function 'AvRtCreateThreadOrderingGroupExA', [:pointer, :pointer, :pointer, :pointer, :string], :bool
46
- attach_function 'AvRtCreateThreadOrderingGroupExW', [:pointer, :pointer, :pointer, :pointer, :string], :bool
47
-
48
- #BOOL WINAPI AvRtDeleteThreadOrderingGroup( _In_ HANDLE Context )
49
- attach_function 'AvRtDeleteThreadOrderingGroup', [:handle], :bool
50
-
51
- #BOOL WINAPI AvRtJoinThreadOrderingGroup(
52
- # _Out_ PHANDLE Context,
53
- # _In_ GUID *ThreadOrderingGuid,
54
- # _In_ BOOL Before )
55
- attach_function 'AvRtJoinThreadOrderingGroup', [:pointer, :pointer, :bool], :bool
56
-
57
- #BOOL WINAPI AvRtWaitOnThreadOrderingGroup( _In_ HANDLE Context )
58
- attach_function 'AvRtWaitOnThreadOrderingGroup', [:handle], :bool
59
-
60
- #HANDLE WINAPI AvSetMmMaxThreadCharacteristics(
61
- # _In_ LPCTSTR FirstTask,
62
- # _In_ LPCTSTR SecondTask,
63
- # _Inout_ LPDWORD TaskIndex )
64
- attach_function 'AvSetMmMaxThreadCharacteristicsA', [:string, :string, :pointer], :handle
65
- attach_function 'AvSetMmMaxThreadCharacteristicsW', [:string, :string, :pointer], :handle
66
-
67
- #HANDLE WINAPI AvSetMmThreadCharacteristics(
68
- # _In_ LPCTSTR TaskName,
69
- # _Inout_ LPDWORD TaskIndex )
70
- attach_function 'AvSetMmThreadCharacteristicsA', [:string, :pointer], :handle
71
- attach_function 'AvSetMmThreadCharacteristicsW', [:string, :pointer], :handle
72
-
73
- #BOOL WINAPI AvSetMmThreadPriority(
74
- # _In_ HANDLE AvrtHandle,
75
- # _In_ AVRT_PRIORITY Priority )
76
- attach_function 'AvSetMmThreadPriority', [:handle, :int], :bool
77
-
78
- end
79
-
80
- ffi_lib 'kernel32'
81
-
82
- #HANDLE WINAPI CreateRemoteThread(
83
- # _In_ HANDLE hProcess,
84
- # _In_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
85
- # _In_ SIZE_T dwStackSize,
86
- # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
87
- # _In_ LPVOID lpParameter,
88
- # _In_ DWORD dwCreationFlags,
89
- # _Out_ LPDWORD lpThreadId )
90
- attach_function 'CreateRemoteThread', [:handle, :pointer, :size_t, :pointer, :pointer, :dword, :pointer], :handle
91
-
92
- #HANDLE WINAPI CreateThread(
93
- # _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
94
- # _In_ SIZE_T dwStackSize,
95
- # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
96
- # _In_opt_ LPVOID lpParameter,
97
- # _In_ DWORD dwCreationFlags,
98
- # _Out_opt_ LPDWORD lpThreadId )
99
- attach_function 'CreateThread', [:pointer, :size_t, :pointer, :pointer, :dword, :pointer], :handle
100
-
101
- #VOID WINAPI ExitThread( _In_ DWORD dwExitCode )
102
- attach_function 'ExitThread', [:dword], :void
103
-
104
- #HANDLE WINAPI GetCurrentThread(void)
105
- attach_function 'GetCurrentThread', [], :handle
106
-
107
- #DWORD WINAPI GetCurrentThreadId(void)
108
- attach_function 'GetCurrentThreadId', [], :ulong
109
-
110
- #BOOL WINAPI GetExitCodeThread(
111
- # _In_ HANDLE hThread,
112
- # _Out_ LPDWORD lpExitCode )
113
- attach_function 'GetExitCodeThread', [:handle, :pointer], :bool
114
-
115
- #int WINAPI GetThreadPriority( _In_ HANDLE hThread )
116
- attach_function 'GetThreadPriority', [:handle], :int
117
-
118
- #BOOL WINAPI GetThreadPriorityBoost(
119
- # _In_ HANDLE hThread,
120
- # _Out_ PBOOL pDisablePriorityBoost )
121
- attach_function 'GetThreadPriorityBoost', [:pointer, :pointer], :bool
122
-
123
- #BOOL WINAPI GetThreadTimes(
124
- # _In_ HANDLE hThread,
125
- # _Out_ LPFILETIME lpCreationTime,
126
- # _Out_ LPFILETIME lpExitTime,
127
- # _Out_ LPFILETIME lpKernelTime,
128
- # _Out_ LPFILETIME lpUserTime )
129
- attach_function 'GetThreadTimes', [:handle, :pointer, :pointer, :pointer, :pointer], :bool
130
-
131
- #HANDLE WINAPI OpenThread(
132
- # _In_ DWORD dwDesiredAccess,
133
- # _In_ BOOL bInheritHandle,
134
- # _In_ DWORD dwThreadId )
135
- attach_function 'OpenThread', [:dword, :bool, :dword], :handle
136
-
137
- #DWORD WINAPI ResumeThread( _In_ HANDLE hThread )
138
- attach_function 'ResumeThread', [:handle], :dword
139
-
140
- #DWORD_PTR WINAPI SetThreadAffinityMask(
141
- # _In_ HANDLE hThread,
142
- # _In_ DWORD_PTR dwThreadAffinityMask )
143
- attach_function 'SetThreadAffinityMask', [:handle, :pointer], :ulong
144
-
145
- #DWORD WINAPI SetThreadIdealProcessor(
146
- # _In_ HANDLE hThread,
147
- # _In_ DWORD dwIdealProcessor )
148
- attach_function 'SetThreadIdealProcessor', [:handle, :dword], :dword
149
-
150
- #BOOL WINAPI SetThreadPriority(
151
- # _In_ HANDLE hThread,
152
- # _In_ int nPriority )
153
- attach_function 'SetThreadPriority', [:handle, :int], :bool
154
-
155
- #BOOL WINAPI SetThreadPriorityBoost(
156
- # _In_ HANDLE hThread,
157
- # _In_ BOOL DisablePriorityBoost )
158
- attach_function 'SetThreadPriorityBoost', [:handle, :bool], :bool
159
-
160
- #VOID WINAPI Sleep( _In_ DWORD dwMilliseconds )
161
- attach_function 'Sleep', [:dword], :void
162
-
163
- #DWORD WINAPI SleepEx(
164
- # _In_ DWORD dwMilliseconds,
165
- # _In_ BOOL bAlertable )
166
- attach_function 'SleepEx', [:dword, :bool], :dword
167
-
168
- #DWORD WINAPI SuspendThread( _In_ HANDLE hThread )
169
- attach_function 'SuspendThread', [:handle], :dword
170
-
171
- #BOOL WINAPI SwitchToThread(void)
172
- attach_function 'SwitchToThread', [], :bool
173
-
174
- #BOOL WINAPI TerminateThread(
175
- # _Inout_ HANDLE hThread,
176
- # _In_ DWORD dwExitCode )
177
- attach_function 'TerminateThread', [:handle, :dword], :bool
178
-
179
- #DWORD WINAPI TlsAlloc(void)
180
- attach_function 'TlsAlloc', [], :dword
181
-
182
- #BOOL WINAPI TlsFree( _In_ DWORD dwTlsIndex )
183
- attach_function 'TlsFree', [:dword], :bool
184
-
185
- #LPVOID WINAPI TlsGetValue( _In_ DWORD dwTlsIndex )
186
- attach_function 'TlsGetValue', [:dword], :pointer
187
-
188
- #BOOL WINAPI TlsSetValue(
189
- # _In_ DWORD dwTlsIndex,
190
- # _In_opt_ LPVOID lpTlsValue )
191
- attach_function 'TlsSetValue', [:dword, :pointer], :bool
192
-
193
- if WindowsVersion >= 7
194
-
195
- #HANDLE CreateRemoteThreadEx(
196
- # _In_ HANDLE hProcess,
197
- # _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
198
- # _In_ SIZE_T dwStackSize,
199
- # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
200
- # _In_opt_ LPVOID lpParameter,
201
- # _In_ DWORD dwCreationFlags,
202
- # _In_opt_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
203
- # _Out_opt_ LPDWORD lpThreadId )
204
- attach_function 'CreateRemoteThreadEx', [:handle, :pointer, :size_t, :pointer, :pointer, :dword, :pointer, :pointer], :bool
205
- end
206
-
207
- if WindowsVersion >= :xp
208
-
209
- ffi_lib 'user32'
210
-
211
- #BOOL WINAPI AttachThreadInput(
212
- # _In_ DWORD idAttach,
213
- # _In_ DWORD idAttachTo,
214
- # _In_ BOOL fAttach )
215
- attach_function 'AttachThreadInput', [:dword, :dword, :bool], :bool
216
-
217
- if WindowsVersion.sp >= 1
218
-
219
- ffi_lib 'kernel32'
220
-
221
- #BOOL WINAPI GetThreadIOPendingFlag(
222
- # _In_ HANDLE hThread,
223
- # _Inout_ PBOOL lpIOIsPending )
224
- attach_function 'GetThreadIOPendingFlag', [:ulong, :pointer], :bool
225
-
226
- end
227
-
228
- end
229
- end
1
+ module WinFFI
2
+ module Thread
3
+ extend LibBase
4
+
5
+ SYNCHRONIZE = 0x00100000
6
+ THREAD_ALL_ACCESS = 0x1F03FF
7
+ THREAD_DIRECT_IMPERSONATION = 0x0200
8
+ THREAD_GET_CONTEXT = 0x0008
9
+ THREAD_IMPERSONATE = 0x0100
10
+ THREAD_QUERY_INFORMATION = 0x0040
11
+ THREAD_SET_CONTEXT = 0x0010
12
+ THREAD_SET_INFORMATION = 0x0020
13
+ THREAD_SET_THREAD_TOKEN = 0x0080
14
+ THREAD_SUSPEND_RESUME = 0x0002
15
+ THREAD_TERMINATE = 0x0001
16
+
17
+ THREAD_PRIORITY_ABOVE_NORMAL = 1
18
+ THREAD_PRIORITY_BELOW_NORMAL = -1
19
+ THREAD_PRIORITY_HIGHEST = 2
20
+ THREAD_PRIORITY_IDLE = -15
21
+ THREAD_PRIORITY_LOWEST = -2
22
+ THREAD_PRIORITY_NORMAL = 0
23
+ THREAD_PRIORITY_TIME_CRITICAL = 15
24
+
25
+ if WindowsVersion >= 7
26
+
27
+ ffi_lib 'Avrt'
28
+
29
+ #BOOL WINAPI AvRevertMmThreadCharacteristics( _In_ HANDLE AvrtHandle )
30
+ attach_function 'AvRevertMmThreadCharacteristics', [:handle], :bool
31
+
32
+ #BOOL WINAPI AvRtCreateThreadOrderingGroup(
33
+ # _Out_ PHANDLE Context,
34
+ # _In_ PLARGE_INTEGER Period,
35
+ # _Inout_ GUID *ThreadOrderingGuid,
36
+ # _In_opt_ PLARGE_INTEGER Timeout )
37
+ attach_function 'AvRtCreateThreadOrderingGroup', [:pointer, :pointer, :pointer, :pointer], :bool
38
+
39
+ #BOOL WINAPI AvRtCreateThreadOrderingGroupEx(
40
+ # _Out_ PHANDLE Context,
41
+ # _In_ PLARGE_INTEGER Period,
42
+ # _Inout_ GUID *ThreadOrderingGuid,
43
+ # _In_opt_ PLARGE_INTEGER Timeout,
44
+ # _In_ LPCTSTR TaskName )
45
+ attach_function 'AvRtCreateThreadOrderingGroupExA', [:pointer, :pointer, :pointer, :pointer, :string], :bool
46
+ attach_function 'AvRtCreateThreadOrderingGroupExW', [:pointer, :pointer, :pointer, :pointer, :string], :bool
47
+
48
+ #BOOL WINAPI AvRtDeleteThreadOrderingGroup( _In_ HANDLE Context )
49
+ attach_function 'AvRtDeleteThreadOrderingGroup', [:handle], :bool
50
+
51
+ #BOOL WINAPI AvRtJoinThreadOrderingGroup(
52
+ # _Out_ PHANDLE Context,
53
+ # _In_ GUID *ThreadOrderingGuid,
54
+ # _In_ BOOL Before )
55
+ attach_function 'AvRtJoinThreadOrderingGroup', [:pointer, :pointer, :bool], :bool
56
+
57
+ #BOOL WINAPI AvRtWaitOnThreadOrderingGroup( _In_ HANDLE Context )
58
+ attach_function 'AvRtWaitOnThreadOrderingGroup', [:handle], :bool
59
+
60
+ #HANDLE WINAPI AvSetMmMaxThreadCharacteristics(
61
+ # _In_ LPCTSTR FirstTask,
62
+ # _In_ LPCTSTR SecondTask,
63
+ # _Inout_ LPDWORD TaskIndex )
64
+ attach_function 'AvSetMmMaxThreadCharacteristicsA', [:string, :string, :pointer], :handle
65
+ attach_function 'AvSetMmMaxThreadCharacteristicsW', [:string, :string, :pointer], :handle
66
+
67
+ #HANDLE WINAPI AvSetMmThreadCharacteristics(
68
+ # _In_ LPCTSTR TaskName,
69
+ # _Inout_ LPDWORD TaskIndex )
70
+ attach_function 'AvSetMmThreadCharacteristicsA', [:string, :pointer], :handle
71
+ attach_function 'AvSetMmThreadCharacteristicsW', [:string, :pointer], :handle
72
+
73
+ #BOOL WINAPI AvSetMmThreadPriority(
74
+ # _In_ HANDLE AvrtHandle,
75
+ # _In_ AVRT_PRIORITY Priority )
76
+ attach_function 'AvSetMmThreadPriority', [:handle, :int], :bool
77
+
78
+ end
79
+
80
+ ffi_lib 'kernel32'
81
+
82
+ #HANDLE WINAPI CreateRemoteThread(
83
+ # _In_ HANDLE hProcess,
84
+ # _In_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
85
+ # _In_ SIZE_T dwStackSize,
86
+ # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
87
+ # _In_ LPVOID lpParameter,
88
+ # _In_ DWORD dwCreationFlags,
89
+ # _Out_ LPDWORD lpThreadId )
90
+ attach_function 'CreateRemoteThread', [:handle, :pointer, :size_t, :pointer, :pointer, :dword, :pointer], :handle
91
+
92
+ #HANDLE WINAPI CreateThread(
93
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
94
+ # _In_ SIZE_T dwStackSize,
95
+ # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
96
+ # _In_opt_ LPVOID lpParameter,
97
+ # _In_ DWORD dwCreationFlags,
98
+ # _Out_opt_ LPDWORD lpThreadId )
99
+ attach_function 'CreateThread', [:pointer, :size_t, :pointer, :pointer, :dword, :pointer], :handle
100
+
101
+ #VOID WINAPI ExitThread( _In_ DWORD dwExitCode )
102
+ attach_function 'ExitThread', [:dword], :void
103
+
104
+ #HANDLE WINAPI GetCurrentThread(void)
105
+ attach_function 'GetCurrentThread', [], :handle
106
+
107
+ #DWORD WINAPI GetCurrentThreadId(void)
108
+ attach_function 'GetCurrentThreadId', [], :ulong
109
+
110
+ #BOOL WINAPI GetExitCodeThread(
111
+ # _In_ HANDLE hThread,
112
+ # _Out_ LPDWORD lpExitCode )
113
+ attach_function 'GetExitCodeThread', [:handle, :pointer], :bool
114
+
115
+ #int WINAPI GetThreadPriority( _In_ HANDLE hThread )
116
+ attach_function 'GetThreadPriority', [:handle], :int
117
+
118
+ #BOOL WINAPI GetThreadPriorityBoost(
119
+ # _In_ HANDLE hThread,
120
+ # _Out_ PBOOL pDisablePriorityBoost )
121
+ attach_function 'GetThreadPriorityBoost', [:pointer, :pointer], :bool
122
+
123
+ #BOOL WINAPI GetThreadTimes(
124
+ # _In_ HANDLE hThread,
125
+ # _Out_ LPFILETIME lpCreationTime,
126
+ # _Out_ LPFILETIME lpExitTime,
127
+ # _Out_ LPFILETIME lpKernelTime,
128
+ # _Out_ LPFILETIME lpUserTime )
129
+ attach_function 'GetThreadTimes', [:handle, :pointer, :pointer, :pointer, :pointer], :bool
130
+
131
+ #HANDLE WINAPI OpenThread(
132
+ # _In_ DWORD dwDesiredAccess,
133
+ # _In_ BOOL bInheritHandle,
134
+ # _In_ DWORD dwThreadId )
135
+ attach_function 'OpenThread', [:dword, :bool, :dword], :handle
136
+
137
+ #DWORD WINAPI ResumeThread( _In_ HANDLE hThread )
138
+ attach_function 'ResumeThread', [:handle], :dword
139
+
140
+ #DWORD_PTR WINAPI SetThreadAffinityMask(
141
+ # _In_ HANDLE hThread,
142
+ # _In_ DWORD_PTR dwThreadAffinityMask )
143
+ attach_function 'SetThreadAffinityMask', [:handle, :pointer], :ulong
144
+
145
+ #DWORD WINAPI SetThreadIdealProcessor(
146
+ # _In_ HANDLE hThread,
147
+ # _In_ DWORD dwIdealProcessor )
148
+ attach_function 'SetThreadIdealProcessor', [:handle, :dword], :dword
149
+
150
+ #BOOL WINAPI SetThreadPriority(
151
+ # _In_ HANDLE hThread,
152
+ # _In_ int nPriority )
153
+ attach_function 'SetThreadPriority', [:handle, :int], :bool
154
+
155
+ #BOOL WINAPI SetThreadPriorityBoost(
156
+ # _In_ HANDLE hThread,
157
+ # _In_ BOOL DisablePriorityBoost )
158
+ attach_function 'SetThreadPriorityBoost', [:handle, :bool], :bool
159
+
160
+ #VOID WINAPI Sleep( _In_ DWORD dwMilliseconds )
161
+ attach_function 'Sleep', [:dword], :void
162
+
163
+ #DWORD WINAPI SleepEx(
164
+ # _In_ DWORD dwMilliseconds,
165
+ # _In_ BOOL bAlertable )
166
+ attach_function 'SleepEx', [:dword, :bool], :dword
167
+
168
+ #DWORD WINAPI SuspendThread( _In_ HANDLE hThread )
169
+ attach_function 'SuspendThread', [:handle], :dword
170
+
171
+ #BOOL WINAPI SwitchToThread(void)
172
+ attach_function 'SwitchToThread', [], :bool
173
+
174
+ #BOOL WINAPI TerminateThread(
175
+ # _Inout_ HANDLE hThread,
176
+ # _In_ DWORD dwExitCode )
177
+ attach_function 'TerminateThread', [:handle, :dword], :bool
178
+
179
+ #DWORD WINAPI TlsAlloc(void)
180
+ attach_function 'TlsAlloc', [], :dword
181
+
182
+ #BOOL WINAPI TlsFree( _In_ DWORD dwTlsIndex )
183
+ attach_function 'TlsFree', [:dword], :bool
184
+
185
+ #LPVOID WINAPI TlsGetValue( _In_ DWORD dwTlsIndex )
186
+ attach_function 'TlsGetValue', [:dword], :pointer
187
+
188
+ #BOOL WINAPI TlsSetValue(
189
+ # _In_ DWORD dwTlsIndex,
190
+ # _In_opt_ LPVOID lpTlsValue )
191
+ attach_function 'TlsSetValue', [:dword, :pointer], :bool
192
+
193
+ if WindowsVersion >= 7
194
+
195
+ #HANDLE CreateRemoteThreadEx(
196
+ # _In_ HANDLE hProcess,
197
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
198
+ # _In_ SIZE_T dwStackSize,
199
+ # _In_ LPTHREAD_START_ROUTINE lpStartAddress,
200
+ # _In_opt_ LPVOID lpParameter,
201
+ # _In_ DWORD dwCreationFlags,
202
+ # _In_opt_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
203
+ # _Out_opt_ LPDWORD lpThreadId )
204
+ attach_function 'CreateRemoteThreadEx', [:handle, :pointer, :size_t, :pointer, :pointer, :dword, :pointer, :pointer], :bool
205
+ end
206
+
207
+ if WindowsVersion >= :xp
208
+
209
+ ffi_lib 'user32'
210
+
211
+ #BOOL WINAPI AttachThreadInput(
212
+ # _In_ DWORD idAttach,
213
+ # _In_ DWORD idAttachTo,
214
+ # _In_ BOOL fAttach )
215
+ attach_function 'AttachThreadInput', [:dword, :dword, :bool], :bool
216
+
217
+ if WindowsVersion.sp >= 1
218
+
219
+ ffi_lib 'kernel32'
220
+
221
+ #BOOL WINAPI GetThreadIOPendingFlag(
222
+ # _In_ HANDLE hThread,
223
+ # _Inout_ PBOOL lpIOIsPending )
224
+ attach_function 'GetThreadIOPendingFlag', [:ulong, :pointer], :bool
225
+
226
+ end
227
+
228
+ end
229
+ end
230
230
  end