win-ffi 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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