win-ffi 0.3.0

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 (271) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +36 -0
  3. data/lib/win-ffi/enums/color_types.rb +61 -0
  4. data/lib/win-ffi/enums/comctl32/init_common_controls.rb +32 -0
  5. data/lib/win-ffi/enums/comctl32/window/style/window_class_style.rb +7 -0
  6. data/lib/win-ffi/enums/comctl32.rb +5 -0
  7. data/lib/win-ffi/enums/comdlg32/find_replace.rb +28 -0
  8. data/lib/win-ffi/enums/comdlg32/font.rb +33 -0
  9. data/lib/win-ffi/enums/extended_name_format.rb +17 -0
  10. data/lib/win-ffi/enums/firmware_type.rb +12 -0
  11. data/lib/win-ffi/enums/gdi32/device_context.rb +29 -0
  12. data/lib/win-ffi/enums/gdi32/dib.rb +8 -0
  13. data/lib/win-ffi/enums/gdi32/hatch_styles.rb +15 -0
  14. data/lib/win-ffi/enums/gdi32/pfd_flags.rb +28 -0
  15. data/lib/win-ffi/enums/gdi32/pfd_layer_type.rb +7 -0
  16. data/lib/win-ffi/enums/gdi32/pfd_type.rb +7 -0
  17. data/lib/win-ffi/enums/gdi32/raster_operations.rb +22 -0
  18. data/lib/win-ffi/enums/gdi32.rb +90 -0
  19. data/lib/win-ffi/enums/kernel32/activation_context.rb +17 -0
  20. data/lib/win-ffi/enums/kernel32/computer_name_format.rb +19 -0
  21. data/lib/win-ffi/enums/kernel32/format_message_flags.rb +16 -0
  22. data/lib/win-ffi/enums/kernel32/get_module_handle_ex_flag.rb +7 -0
  23. data/lib/win-ffi/enums/kernel32/global_alloc_flags.rb +14 -0
  24. data/lib/win-ffi/enums/kernel32/handle.rb +9 -0
  25. data/lib/win-ffi/enums/kernel32/heap_flags.rb +14 -0
  26. data/lib/win-ffi/enums/kernel32/local_flags.rb +20 -0
  27. data/lib/win-ffi/enums/kernel32/memory.rb +12 -0
  28. data/lib/win-ffi/enums/kernel32/memory_flags.rb +22 -0
  29. data/lib/win-ffi/enums/kernel32/memory_protection_constants.rb +20 -0
  30. data/lib/win-ffi/enums/kernel32/set_error_mode_flags.rb +11 -0
  31. data/lib/win-ffi/enums/kernel32/sound_flags.rb +24 -0
  32. data/lib/win-ffi/enums/kernel32/volume.rb +13 -0
  33. data/lib/win-ffi/enums/kernel32.rb +5 -0
  34. data/lib/win-ffi/enums/lr.rb +48 -0
  35. data/lib/win-ffi/enums/netapi21/net_api_status.rb +25 -0
  36. data/lib/win-ffi/enums/netapi32.rb +5 -0
  37. data/lib/win-ffi/enums/system_info.rb +54 -0
  38. data/lib/win-ffi/enums/user32/append_menu_flags.rb +21 -0
  39. data/lib/win-ffi/enums/user32/border_flags.rb +29 -0
  40. data/lib/win-ffi/enums/user32/clipboard_formats.rb +31 -0
  41. data/lib/win-ffi/enums/user32/device_notify_flags.rb +17 -0
  42. data/lib/win-ffi/enums/user32/draw_caption_flags.rb +16 -0
  43. data/lib/win-ffi/enums/user32/draw_frame_control_flags.rb +15 -0
  44. data/lib/win-ffi/enums/user32/draw_frame_control_state_flags.rb +44 -0
  45. data/lib/win-ffi/enums/user32/edge_flags.rb +20 -0
  46. data/lib/win-ffi/enums/user32/feedback_type.rb +21 -0
  47. data/lib/win-ffi/enums/user32/get_ancestor_flags.rb +12 -0
  48. data/lib/win-ffi/enums/user32/icon.rb +19 -0
  49. data/lib/win-ffi/enums/user32/image.rb +12 -0
  50. data/lib/win-ffi/enums/user32/key_event_flags.rb +11 -0
  51. data/lib/win-ffi/enums/user32/keyboard_layout_flags.rb +57 -0
  52. data/lib/win-ffi/enums/user32/keyboard_modifiers.rb +16 -0
  53. data/lib/win-ffi/enums/user32/layered_window_attributes_flags.rb +12 -0
  54. data/lib/win-ffi/enums/user32/map_virtual_key.rb +22 -0
  55. data/lib/win-ffi/enums/user32/message_filter.rb +11 -0
  56. data/lib/win-ffi/enums/user32/mouse_event_flags.rb +25 -0
  57. data/lib/win-ffi/enums/user32/mouse_keys_flags.rb +16 -0
  58. data/lib/win-ffi/enums/user32/mwmo.rb +17 -0
  59. data/lib/win-ffi/enums/user32/ocr.rb +32 -0
  60. data/lib/win-ffi/enums/user32/oic.rb +26 -0
  61. data/lib/win-ffi/enums/user32/pen_flags.rb +12 -0
  62. data/lib/win-ffi/enums/user32/pen_mask.rb +14 -0
  63. data/lib/win-ffi/enums/user32/pointer_flags.rb +82 -0
  64. data/lib/win-ffi/enums/user32/pointer_input_type.rb +13 -0
  65. data/lib/win-ffi/enums/user32/process_dpi_awareness.rb +12 -0
  66. data/lib/win-ffi/enums/user32/queue_status_flags.rb +36 -0
  67. data/lib/win-ffi/enums/user32/rim.rb +12 -0
  68. data/lib/win-ffi/enums/user32/touch_injection_flags.rb +13 -0
  69. data/lib/win-ffi/enums/user32/touch_mask.rb +13 -0
  70. data/lib/win-ffi/enums/user32/user_object_information_flags.rb +22 -0
  71. data/lib/win-ffi/enums/user32/virtual_key_flags.rb +214 -0
  72. data/lib/win-ffi/enums/user32/window/animate_window_flags.rb +31 -0
  73. data/lib/win-ffi/enums/user32/window/broadcast_system_flags.rb +20 -0
  74. data/lib/win-ffi/enums/user32/window/broadcast_system_message_flags.rb +12 -0
  75. data/lib/win-ffi/enums/user32/window/combo_box_message.rb +53 -0
  76. data/lib/win-ffi/enums/user32/window/get_class_long_flags.rb +34 -0
  77. data/lib/win-ffi/enums/user32/window/get_window_flags.rb +38 -0
  78. data/lib/win-ffi/enums/user32/window/get_window_long_flags.rb +16 -0
  79. data/lib/win-ffi/enums/user32/window/menu_flags.rb +54 -0
  80. data/lib/win-ffi/enums/user32/window/message_box_flags.rb +90 -0
  81. data/lib/win-ffi/enums/user32/window/message_box_return.rb +18 -0
  82. data/lib/win-ffi/enums/user32/window/notification/button_notification.rb +20 -0
  83. data/lib/win-ffi/enums/user32/window/notification/edit_notification.rb +19 -0
  84. data/lib/win-ffi/enums/user32/window/notification/static_notification.rb +13 -0
  85. data/lib/win-ffi/enums/user32/window/peek_message_flags.rb +13 -0
  86. data/lib/win-ffi/enums/user32/window/set_window_pos_flags.rb +48 -0
  87. data/lib/win-ffi/enums/user32/window/show_window_flags.rb +41 -0
  88. data/lib/win-ffi/enums/user32/window/smto.rb +22 -0
  89. data/lib/win-ffi/enums/user32/window/style/button_control_style.rb +37 -0
  90. data/lib/win-ffi/enums/user32/window/style/combo_box_style.rb +22 -0
  91. data/lib/win-ffi/enums/user32/window/style/edit_style.rb +23 -0
  92. data/lib/win-ffi/enums/user32/window/style/static_style.rb +45 -0
  93. data/lib/win-ffi/enums/user32/window/style/window_class_style.rb +50 -0
  94. data/lib/win-ffi/enums/user32/window/style/window_style.rb +85 -0
  95. data/lib/win-ffi/enums/user32/window/style/window_style_ex.rb +98 -0
  96. data/lib/win-ffi/enums/user32/window/system_menu_command.rb +37 -0
  97. data/lib/win-ffi/enums/user32/window/system_metrics_flags.rb +300 -0
  98. data/lib/win-ffi/enums/user32/window/system_parameters_info_action.rb +225 -0
  99. data/lib/win-ffi/enums/user32/window/system_parameters_info_flags.rb +246 -0
  100. data/lib/win-ffi/enums/user32/window/track_popup_menu_flags.rb +70 -0
  101. data/lib/win-ffi/enums/user32/window/window_long.rb +22 -0
  102. data/lib/win-ffi/enums/user32/window/window_messages.rb +222 -0
  103. data/lib/win-ffi/enums/user32/window_hook.rb +56 -0
  104. data/lib/win-ffi/enums/user32.rb +5 -0
  105. data/lib/win-ffi/functions/advapi32/process.rb +33 -0
  106. data/lib/win-ffi/functions/advapi32/system_info.rb +17 -0
  107. data/lib/win-ffi/functions/comctl32/control.rb +11 -0
  108. data/lib/win-ffi/functions/comctl32/listbox.rb +20 -0
  109. data/lib/win-ffi/functions/comctl32.rb +7 -0
  110. data/lib/win-ffi/functions/comdlg32/color.rb +9 -0
  111. data/lib/win-ffi/functions/comdlg32/error.rb +6 -0
  112. data/lib/win-ffi/functions/comdlg32/find_replace.rb +9 -0
  113. data/lib/win-ffi/functions/comdlg32/font.rb +9 -0
  114. data/lib/win-ffi/functions/comdlg32.rb +7 -0
  115. data/lib/win-ffi/functions/gdi32/bitmap.rb +275 -0
  116. data/lib/win-ffi/functions/gdi32/brush.rb +54 -0
  117. data/lib/win-ffi/functions/gdi32/device_context.rb +126 -0
  118. data/lib/win-ffi/functions/gdi32/filled_shape.rb +68 -0
  119. data/lib/win-ffi/functions/gdi32/font.rb +9 -0
  120. data/lib/win-ffi/functions/gdi32/metafile.rb +173 -0
  121. data/lib/win-ffi/functions/gdi32/opengl.rb +29 -0
  122. data/lib/win-ffi/functions/gdi32/painting_drawing.rb +50 -0
  123. data/lib/win-ffi/functions/gdi32/text.rb +376 -0
  124. data/lib/win-ffi/functions/gdi32.rb +7 -0
  125. data/lib/win-ffi/functions/kernel32/activation.rb +22 -0
  126. data/lib/win-ffi/functions/kernel32/dll.rb +92 -0
  127. data/lib/win-ffi/functions/kernel32/error.rb +28 -0
  128. data/lib/win-ffi/functions/kernel32/filesystem.rb +22 -0
  129. data/lib/win-ffi/functions/kernel32/handle.rb +29 -0
  130. data/lib/win-ffi/functions/kernel32/memory.rb +478 -0
  131. data/lib/win-ffi/functions/kernel32/process.rb +359 -0
  132. data/lib/win-ffi/functions/kernel32/resource.rb +141 -0
  133. data/lib/win-ffi/functions/kernel32/sound.rb +10 -0
  134. data/lib/win-ffi/functions/kernel32/string.rb +38 -0
  135. data/lib/win-ffi/functions/kernel32/system_info.rb +183 -0
  136. data/lib/win-ffi/functions/kernel32/time.rb +220 -0
  137. data/lib/win-ffi/functions/kernel32/volume.rb +130 -0
  138. data/lib/win-ffi/functions/kernel32.rb +15 -0
  139. data/lib/win-ffi/functions/msimg32/bitmap.rb +46 -0
  140. data/lib/win-ffi/functions/msvcrt/handle.rb +13 -0
  141. data/lib/win-ffi/functions/netapi32/network_management.rb +13 -0
  142. data/lib/win-ffi/functions/netapi32.rb +7 -0
  143. data/lib/win-ffi/functions/ntdll/system_info.rb +14 -0
  144. data/lib/win-ffi/functions/secur32/system_info.rb +30 -0
  145. data/lib/win-ffi/functions/shell32/icon.rb +49 -0
  146. data/lib/win-ffi/functions/shutdown.rb +84 -0
  147. data/lib/win-ffi/functions/thread.rb +230 -0
  148. data/lib/win-ffi/functions/user32/accessibility.rb +23 -0
  149. data/lib/win-ffi/functions/user32/authorization.rb +19 -0
  150. data/lib/win-ffi/functions/user32/bitmap.rb +11 -0
  151. data/lib/win-ffi/functions/user32/brush.rb +10 -0
  152. data/lib/win-ffi/functions/user32/caret.rb +36 -0
  153. data/lib/win-ffi/functions/user32/clipboard.rb +84 -0
  154. data/lib/win-ffi/functions/user32/controls/button.rb +23 -0
  155. data/lib/win-ffi/functions/user32/controls/combobox.rb +29 -0
  156. data/lib/win-ffi/functions/user32/controls/listbox.rb +25 -0
  157. data/lib/win-ffi/functions/user32/controls/scrollbar.rb +95 -0
  158. data/lib/win-ffi/functions/user32/cursor.rb +74 -0
  159. data/lib/win-ffi/functions/user32/dde.rb +214 -0
  160. data/lib/win-ffi/functions/user32/desktop.rb +76 -0
  161. data/lib/win-ffi/functions/user32/device.rb +17 -0
  162. data/lib/win-ffi/functions/user32/device_context.rb +62 -0
  163. data/lib/win-ffi/functions/user32/display.rb +37 -0
  164. data/lib/win-ffi/functions/user32/error.rb +10 -0
  165. data/lib/win-ffi/functions/user32/filled_shape.rb +23 -0
  166. data/lib/win-ffi/functions/user32/gesture.rb +38 -0
  167. data/lib/win-ffi/functions/user32/hook.rb +123 -0
  168. data/lib/win-ffi/functions/user32/icon.rb +98 -0
  169. data/lib/win-ffi/functions/user32/input.rb +23 -0
  170. data/lib/win-ffi/functions/user32/keyboard.rb +177 -0
  171. data/lib/win-ffi/functions/user32/keyboard_accelerators.rb +37 -0
  172. data/lib/win-ffi/functions/user32/mouse.rb +60 -0
  173. data/lib/win-ffi/functions/user32/multiple_display_monitors.rb +43 -0
  174. data/lib/win-ffi/functions/user32/multiple_document_interface.rb +44 -0
  175. data/lib/win-ffi/functions/user32/painting_drawing.rb +173 -0
  176. data/lib/win-ffi/functions/user32/pointer.rb +154 -0
  177. data/lib/win-ffi/functions/user32/power.rb +28 -0
  178. data/lib/win-ffi/functions/user32/print.rb +14 -0
  179. data/lib/win-ffi/functions/user32/process.rb +30 -0
  180. data/lib/win-ffi/functions/user32/raw_input.rb +55 -0
  181. data/lib/win-ffi/functions/user32/rect.rb +67 -0
  182. data/lib/win-ffi/functions/user32/resource.rb +28 -0
  183. data/lib/win-ffi/functions/user32/shell.rb +29 -0
  184. data/lib/win-ffi/functions/user32/string.rb +98 -0
  185. data/lib/win-ffi/functions/user32/text.rb +48 -0
  186. data/lib/win-ffi/functions/user32/touch.rb +69 -0
  187. data/lib/win-ffi/functions/user32/transform.rb +22 -0
  188. data/lib/win-ffi/functions/user32/window/configuration.rb +15 -0
  189. data/lib/win-ffi/functions/user32/window/dialog.rb +167 -0
  190. data/lib/win-ffi/functions/user32/window/menu.rb +245 -0
  191. data/lib/win-ffi/functions/user32/window/message.rb +168 -0
  192. data/lib/win-ffi/functions/user32/window/properties.rb +50 -0
  193. data/lib/win-ffi/functions/user32/window/timer.rb +37 -0
  194. data/lib/win-ffi/functions/user32/window/window.rb +546 -0
  195. data/lib/win-ffi/functions/user32/window/window_class.rb +109 -0
  196. data/lib/win-ffi/functions/user32/window/window_proc.rb +29 -0
  197. data/lib/win-ffi/functions/user32/window_station.rb +39 -0
  198. data/lib/win-ffi/functions/user32.rb +161 -0
  199. data/lib/win-ffi/functions/winmm.rb +547 -0
  200. data/lib/win-ffi/functions/wtsapi32/process.rb +12 -0
  201. data/lib/win-ffi/lib_base.rb +54 -0
  202. data/lib/win-ffi/struct.rb +15 -0
  203. data/lib/win-ffi/structs/comctl32/init_common_controls_ex.rb +10 -0
  204. data/lib/win-ffi/structs/comdlg32/choose_color.rb +23 -0
  205. data/lib/win-ffi/structs/comdlg32/choose_font.rb +28 -0
  206. data/lib/win-ffi/structs/comdlg32/find_replace.rb +24 -0
  207. data/lib/win-ffi/structs/gdi32/abc.rb +9 -0
  208. data/lib/win-ffi/structs/gdi32/abcfloat.rb +10 -0
  209. data/lib/win-ffi/structs/gdi32/bitmap.rb +13 -0
  210. data/lib/win-ffi/structs/gdi32/bitmap_info.rb +11 -0
  211. data/lib/win-ffi/structs/gdi32/bitmap_info_header.rb +17 -0
  212. data/lib/win-ffi/structs/gdi32/blend_function.rb +10 -0
  213. data/lib/win-ffi/structs/gdi32/display_device.rb +12 -0
  214. data/lib/win-ffi/structs/gdi32/handle_table.rb +7 -0
  215. data/lib/win-ffi/structs/gdi32/kerning_pair.rb +9 -0
  216. data/lib/win-ffi/structs/gdi32/log_brush.rb +10 -0
  217. data/lib/win-ffi/structs/gdi32/log_font.rb +20 -0
  218. data/lib/win-ffi/structs/gdi32/meta_file_pict.rb +10 -0
  219. data/lib/win-ffi/structs/gdi32/palette_entry.rb +10 -0
  220. data/lib/win-ffi/structs/gdi32/pixel_format_descriptor.rb +57 -0
  221. data/lib/win-ffi/structs/gdi32/rgb_quad.rb +10 -0
  222. data/lib/win-ffi/structs/kernel32/actctx.rb +22 -0
  223. data/lib/win-ffi/structs/netapi32/wksta_info_100.rb +9 -0
  224. data/lib/win-ffi/structs/os_version_info.rb +10 -0
  225. data/lib/win-ffi/structs/os_version_info_ex.rb +70 -0
  226. data/lib/win-ffi/structs/paint_struct.rb +12 -0
  227. data/lib/win-ffi/structs/point.rb +10 -0
  228. data/lib/win-ffi/structs/rect.rb +28 -0
  229. data/lib/win-ffi/structs/size.rb +6 -0
  230. data/lib/win-ffi/structs/user32/controls/combobox_info.rb +13 -0
  231. data/lib/win-ffi/structs/user32/controls/scroll_info.rb +13 -0
  232. data/lib/win-ffi/structs/user32/controls/scrollbar_info.rb +13 -0
  233. data/lib/win-ffi/structs/user32/cursor_info.rb +10 -0
  234. data/lib/win-ffi/structs/user32/display_device.rb +12 -0
  235. data/lib/win-ffi/structs/user32/draw_text_params.rb +11 -0
  236. data/lib/win-ffi/structs/user32/icon_info.rb +11 -0
  237. data/lib/win-ffi/structs/user32/icon_info_ex.rb +15 -0
  238. data/lib/win-ffi/structs/user32/last_input_info.rb +8 -0
  239. data/lib/win-ffi/structs/user32/mouse_move_point.rb +10 -0
  240. data/lib/win-ffi/structs/user32/msg.rb +16 -0
  241. data/lib/win-ffi/structs/user32/pointer_info.rb +25 -0
  242. data/lib/win-ffi/structs/user32/pointer_pen_info.rb +18 -0
  243. data/lib/win-ffi/structs/user32/pointer_touch_info.rb +17 -0
  244. data/lib/win-ffi/structs/user32/raw_input_device_list.rb +10 -0
  245. data/lib/win-ffi/structs/user32/raw_input_header.rb +10 -0
  246. data/lib/win-ffi/structs/user32/touch_hit_testing_input.rb +11 -0
  247. data/lib/win-ffi/structs/user32/touch_hit_testing_proximity_evaluation.rb +8 -0
  248. data/lib/win-ffi/structs/user32/track_mouse_event.rb +10 -0
  249. data/lib/win-ffi/structs/user32/window/alt_tab_info.rb +17 -0
  250. data/lib/win-ffi/structs/user32/window/bs_info.rb +12 -0
  251. data/lib/win-ffi/structs/user32/window/create_struct.rb +22 -0
  252. data/lib/win-ffi/structs/user32/window/dlg_template.rb +13 -0
  253. data/lib/win-ffi/structs/user32/window/flashw_info.rb +11 -0
  254. data/lib/win-ffi/structs/user32/window/gui_thread_info.rb +17 -0
  255. data/lib/win-ffi/structs/user32/window/luid.rb +8 -0
  256. data/lib/win-ffi/structs/user32/window/menu_info.rb +13 -0
  257. data/lib/win-ffi/structs/user32/window/menu_item_info.rb +18 -0
  258. data/lib/win-ffi/structs/user32/window/menu_item_template.rb +9 -0
  259. data/lib/win-ffi/structs/user32/window/menubar_info.rb +12 -0
  260. data/lib/win-ffi/structs/user32/window/msgbox_params.rb +16 -0
  261. data/lib/win-ffi/structs/user32/window/non_client_metrics.rb +29 -0
  262. data/lib/win-ffi/structs/user32/window/title_bar_info.rb +9 -0
  263. data/lib/win-ffi/structs/user32/window/tpm_params.rb +8 -0
  264. data/lib/win-ffi/structs/user32/window/update_layered_window_info.rb +22 -0
  265. data/lib/win-ffi/structs/user32/window/window_placement.rb +32 -0
  266. data/lib/win-ffi/structs/user32/window/window_pos.rb +46 -0
  267. data/lib/win-ffi/structs/user32/window/wndclass.rb +19 -0
  268. data/lib/win-ffi/structs/user32/window/wndclassex.rb +40 -0
  269. data/lib/win-ffi/version.rb +3 -0
  270. data/lib/win-ffi.rb +42 -0
  271. metadata +363 -0
@@ -0,0 +1,359 @@
1
+ require 'win-ffi/functions/kernel32'
2
+
3
+ module WinFFI
4
+ # The Process module includes process related functions and constants,
5
+ # including some tool help functions that relate to processes.
6
+ module Kernel32
7
+ extend LibBase
8
+
9
+ # Process access rights
10
+
11
+ PROCESS_ALL_ACCESS = 0x1F0FFF
12
+ PROCESS_CREATE_PROCESS = 0x0080
13
+ PROCESS_CREATE_THREAD = 0x0002
14
+ PROCESS_DUP_HANDLE = 0x0040
15
+ PROCESS_QUERY_INFORMATION = 0x0400
16
+ PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
17
+ PROCESS_SET_QUOTA = 0x0100
18
+ PROCESS_SET_INFORMATION = 0x0200
19
+ PROCESS_SUSPEND_RESUME = 0x0800
20
+ PROCESS_TERMINATE = 0x0001
21
+ PROCESS_VM_OPERATION = 0x0008
22
+ PROCESS_VM_READ = 0x0010
23
+ PROCESS_VM_WRITE = 0x0020
24
+ SYNCHRONIZE = 1048576
25
+ STILL_ACTIVE = 259
26
+
27
+ # Process priority flags
28
+
29
+ ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
30
+ BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
31
+ HIGH_PRIORITY_CLASS = 0x00000080
32
+ IDLE_PRIORITY_CLASS = 0x00000040
33
+ NORMAL_PRIORITY_CLASS = 0x00000020
34
+ REALTIME_PRIORITY_CLASS = 0x00000100
35
+
36
+ # Process creation flags
37
+
38
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000
39
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000
40
+ CREATE_NEW_CONSOLE = 0x00000010
41
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
42
+ CREATE_NO_WINDOW = 0x08000000
43
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
44
+ CREATE_SEPARATE_WOW_VDM = 0x00000800
45
+ CREATE_SHARED_WOW_VDM = 0x00001000
46
+ CREATE_SUSPENDED = 0x00000004
47
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400
48
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002
49
+ DEBUG_PROCESS = 0x00000001
50
+ DETACHED_PROCESS = 0x00000008
51
+
52
+ STARTF_USESHOWWINDOW = 0x00000001
53
+ STARTF_USESIZE = 0x00000002
54
+ STARTF_USEPOSITION = 0x00000004
55
+ STARTF_USECOUNTCHARS = 0x00000008
56
+ STARTF_USEFILLATTRIBUTE = 0x00000010
57
+ STARTF_RUNFULLSCREEN = 0x00000020
58
+ STARTF_FORCEONFEEDBACK = 0x00000040
59
+ STARTF_FORCEOFFFEEDBACK = 0x00000080
60
+ STARTF_USESTDHANDLES = 0x00000100
61
+ STARTF_USEHOTKEY = 0x00000200
62
+
63
+ LOGON_WITH_PROFILE = 0x00000001
64
+ LOGON_NETCREDENTIALS_ONLY = 0x00000002
65
+
66
+ SHUTDOWN_NORETRY = 0x00000001
67
+
68
+ # Job Object Classes
69
+
70
+ JobObjectBasicLimitInformation = 2
71
+ JobObjectBasicUIRestrictions = 4
72
+ JobObjectSecurityLimitInformation = 5
73
+ JobObjectEndOfJobTimeInformation = 6
74
+ JobObjectAssociateCompletionPortInformation = 7
75
+ JobObjectExtendedLimitInformation = 9
76
+ JobObjectGroupInformation = 11
77
+
78
+ # Job Limit Flags
79
+
80
+ JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
81
+ JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
82
+ JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
83
+ JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
84
+ JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
85
+ JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
86
+ JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
87
+ JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
88
+ JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
89
+ JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
90
+ JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
91
+ JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
92
+ JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
93
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
94
+
95
+ # Job Access Rights
96
+
97
+ JOB_OBJECT_ASSIGN_PROCESS = 0x0001
98
+ JOB_OBJECT_SET_ATTRIBUTES = 0x0002
99
+ JOB_OBJECT_QUERY = 0x0004
100
+ JOB_OBJECT_TERMINATE = 0x0008
101
+ JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010
102
+ JOB_OBJECT_ALL_ACCESS = 0x1F001F
103
+
104
+ begin
105
+ ffi_lib 'Psapi'
106
+
107
+ # psapi, maybe
108
+ #BOOL WINAPI EnumProcesses(
109
+ # _Out_ DWORD *pProcessIds,
110
+ # _In_ DWORD cb,
111
+ # _Out_ DWORD *pBytesReturned )
112
+ attach_function 'EnumProcesses', [:pointer, :dword, :pointer], :bool
113
+
114
+ rescue FFI::FunctionNotFound
115
+ ffi_lib 'kernel32'
116
+
117
+ # psapi, maybe
118
+ #BOOL WINAPI EnumProcesses(
119
+ # _Out_ DWORD *pProcessIds,
120
+ # _In_ DWORD cb,
121
+ # _Out_ DWORD *pBytesReturned )
122
+ attach_function 'EnumProcesses', [:pointer, :dword, :pointer], :bool
123
+ end
124
+
125
+ ffi_lib 'kernel32'
126
+
127
+ #BOOL WINAPI AssignProcessToJobObject(
128
+ # _In_ HANDLE hJob,
129
+ # _In_ HANDLE hProcess )
130
+ attach_function 'AssignProcessToJobObject', [:handle, :handle], :bool
131
+
132
+ #HANDLE WINAPI CreateJobObject(
133
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes,
134
+ # _In_opt_ LPCTSTR lpName )
135
+ attach_function 'CreateJobObjectA', [:pointer, :string], :ulong
136
+ attach_function 'CreateJobObjectW', [:pointer, :string], :ulong
137
+
138
+ #BOOL WINAPI CreateProcess(
139
+ # _In_opt_ LPCTSTR lpApplicationName,
140
+ # _Inout_opt_ LPTSTR lpCommandLine,
141
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
142
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
143
+ # _In_ BOOL bInheritHandles,
144
+ # _In_ DWORD dwCreationFlags,
145
+ # _In_opt_ LPVOID lpEnvironment,
146
+ # _In_opt_ LPCTSTR lpCurrentDirectory,
147
+ # _In_ LPSTARTUPINFO lpStartupInfo,
148
+ # _Out_ LPPROCESS_INFORMATION lpProcessInformation )
149
+ attach_function 'CreateProcessA', [:string, :pointer, :pointer, :pointer, :bool, :dword, :pointer, :pointer, :pointer, :pointer], :bool
150
+ attach_function 'CreateProcessW', [:string, :pointer, :pointer, :pointer, :bool, :dword, :pointer, :pointer, :pointer, :pointer], :bool
151
+
152
+ #VOID WINAPI ExitProcess( _In_ UINT uExitCode )
153
+ attach_function 'ExitProcess', [:uint], :void
154
+
155
+ #BOOL WINAPI FreeEnvironmentStrings( _In_ LPTCH lpszEnvironmentBlock )
156
+ attach_function 'FreeEnvironmentStringsA', [:pointer], :bool
157
+ attach_function 'FreeEnvironmentStringsW', [:pointer], :bool
158
+
159
+ #LPTSTR WINAPI GetCommandLine(void)
160
+ attach_function 'GetCommandLineA', [], :pointer
161
+ attach_function 'GetCommandLineW', [], :pointer
162
+
163
+ #HANDLE WINAPI GetCurrentProcess(void)
164
+ attach_function 'GetCurrentProcess', [], :handle
165
+
166
+ #DWORD WINAPI GetCurrentProcessId(void)
167
+ attach_function 'GetCurrentProcessId', [], :ulong
168
+
169
+ #LPTCH WINAPI GetEnvironmentStrings(void)
170
+ attach_function 'GetEnvironmentStrings', [], :pointer
171
+ attach_function 'GetEnvironmentStringsA', [], :pointer
172
+ attach_function 'GetEnvironmentStringsW', [], :pointer
173
+
174
+ #DWORD WINAPI GetEnvironmentVariable(
175
+ # _In_opt_ LPCTSTR lpName,
176
+ # _Out_opt_ LPTSTR lpBuffer,
177
+ # _In_ DWORD nSize )
178
+ attach_function 'GetEnvironmentVariableA', [:string, :pointer, :dword], :dword
179
+ attach_function 'GetEnvironmentVariableW', [:string, :pointer, :dword], :dword
180
+
181
+ #BOOL WINAPI GetExitCodeProcess(
182
+ # _In_ HANDLE hProcess,
183
+ # _Out_ LPDWORD lpExitCode )
184
+ attach_function 'GetExitCodeProcess', [:handle, :pointer], :bool
185
+
186
+ #DWORD WINAPI GetPriorityClass( _In_ HANDLE hProcess )
187
+ attach_function 'GetPriorityClass', [:handle], :dword
188
+
189
+ #BOOL WINAPI GetProcessAffinityMask(
190
+ # _In_ HANDLE hProcess,
191
+ # _Out_ PDWORD_PTR lpProcessAffinityMask,
192
+ # _Out_ PDWORD_PTR lpSystemAffinityMask )
193
+ attach_function 'GetProcessAffinityMask', [:handle, :pointer, :pointer], :bool
194
+
195
+ #BOOL WINAPI GetProcessIoCounters(
196
+ # _In_ HANDLE hProcess,
197
+ # _Out_ PIO_COUNTERS lpIoCounters )
198
+ attach_function 'GetProcessIoCounters', [:handle, :pointer], :bool
199
+
200
+ #BOOL WINAPI GetProcessPriorityBoost(
201
+ # _In_ HANDLE hProcess,
202
+ # _Out_ PBOOL pDisablePriorityBoost )
203
+ attach_function 'GetProcessPriorityBoost', [:handle, :pointer], :bool
204
+
205
+ #BOOL WINAPI GetProcessShutdownParameters(
206
+ # _Out_ LPDWORD lpdwLevel,
207
+ # _Out_ LPDWORD lpdwFlags )
208
+ attach_function 'GetProcessShutdownParameters', [:pointer, :pointer], :bool
209
+
210
+ #BOOL WINAPI GetProcessTimes(
211
+ # _In_ HANDLE hProcess,
212
+ # _Out_ LPFILETIME lpCreationTime,
213
+ # _Out_ LPFILETIME lpExitTime,
214
+ # _Out_ LPFILETIME lpKernelTime,
215
+ # _Out_ LPFILETIME lpUserTime )
216
+ attach_function 'GetProcessTimes', [:handle, :pointer, :pointer, :pointer, :pointer], :bool
217
+
218
+ #DWORD WINAPI GetProcessVersion( _In_ DWORD ProcessId )
219
+ attach_function 'GetProcessVersion', [:dword], :dword
220
+
221
+ #BOOL WINAPI GetProcessWorkingSetSize(
222
+ # _In_ HANDLE hProcess,
223
+ # _Out_ PSIZE_T lpMinimumWorkingSetSize,
224
+ # _Out_ PSIZE_T lpMaximumWorkingSetSize )
225
+ attach_function 'GetProcessWorkingSetSize', [:handle, :pointer, :pointer], :bool
226
+
227
+ #VOID WINAPI GetStartupInfo( _Out_ LPSTARTUPINFO lpStartupInfo )
228
+ attach_function 'GetStartupInfoA', [:pointer], :void
229
+ attach_function 'GetStartupInfoW', [:pointer], :void
230
+
231
+ #BOOL WINAPI IsProcessInJob(
232
+ # _In_ HANDLE ProcessHandle,
233
+ # _In_opt_ HANDLE JobHandle,
234
+ # _Out_ PBOOL Result )
235
+ attach_function 'IsProcessInJob', [:handle, :handle, :pointer], :bool
236
+
237
+ #HANDLE WINAPI OpenJobObject(
238
+ # _In_ DWORD dwDesiredAccess,
239
+ # _In_ BOOL bInheritHandles,
240
+ # _In_ LPCTSTR lpName )
241
+ attach_function 'OpenJobObjectA', [:dword, :bool, :string], :handle
242
+ attach_function 'OpenJobObjectW', [:dword, :bool, :string], :handle
243
+
244
+ #HANDLE WINAPI OpenProcess(
245
+ # _In_ DWORD dwDesiredAccess,
246
+ # _In_ BOOL bInheritHandle,
247
+ # _In_ DWORD dwProcessId )
248
+ attach_function 'OpenProcess', [:dword, :bool, :dword], :handle
249
+
250
+ #BOOL WINAPI QueryInformationJobObject(
251
+ # _In_opt_ HANDLE hJob,
252
+ # _In_ JOBOBJECTINFOCLASS JobObjectInfoClass,
253
+ # _Out_ LPVOID lpJobObjectInfo,
254
+ # _In_ DWORD cbJobObjectInfoLength,
255
+ # _Out_opt_ LPDWORD lpReturnLength )
256
+ attach_function 'QueryInformationJobObject', [:handle, :ulong, :pointer, :dword, :pointer], :bool
257
+
258
+ #BOOL WINAPI SetEnvironmentVariable(
259
+ # _In_ LPCTSTR lpName,
260
+ # _In_opt_ LPCTSTR lpValue )
261
+ attach_function 'SetEnvironmentVariableA', [:string, :string], :bool
262
+ attach_function 'SetEnvironmentVariableW', [:string, :string], :bool
263
+
264
+ #TODO
265
+ #BOOL WINAPI SetInformationJobObject(
266
+ # _In_ HANDLE hJob,
267
+ # _In_ JOBOBJECTINFOCLASS JobObjectInfoClass,
268
+ # _In_ LPVOID lpJobObjectInfo,
269
+ # _In_ DWORD cbJobObjectInfoLength )
270
+ attach_function 'SetInformationJobObject', [:handle, :ulong, :pointer, :dword], :bool
271
+
272
+ #BOOL WINAPI SetPriorityClass(
273
+ # _In_ HANDLE hProcess,
274
+ # _In_ DWORD dwPriorityClass )
275
+ attach_function 'SetPriorityClass', [:handle, :dword], :bool
276
+
277
+ #BOOL WINAPI SetProcessAffinityMask(
278
+ # _In_ HANDLE hProcess,
279
+ # _In_ DWORD_PTR dwProcessAffinityMask )
280
+ attach_function 'SetProcessAffinityMask', [:handle, :dword], :bool
281
+
282
+ #BOOL WINAPI SetProcessPriorityBoost(
283
+ # _In_ HANDLE hProcess,
284
+ # _In_ BOOL DisablePriorityBoost )
285
+ attach_function 'SetProcessPriorityBoost', [:handle, :bool], :bool
286
+
287
+ #BOOL WINAPI SetProcessShutdownParameters(
288
+ # _In_ DWORD dwLevel,
289
+ # _In_ DWORD dwFlags )
290
+ attach_function 'SetProcessShutdownParameters', [:dword, :dword], :bool
291
+
292
+ #BOOL WINAPI SetProcessWorkingSetSize(
293
+ # _In_ HANDLE hProcess,
294
+ # _In_ SIZE_T dwMinimumWorkingSetSize,
295
+ # _In_ SIZE_T dwMaximumWorkingSetSize )
296
+ attach_function 'SetProcessWorkingSetSize', [:handle, :size_t, :size_t], :bool
297
+
298
+ #BOOL WINAPI TerminateJobObject(
299
+ # _In_ HANDLE hJob,
300
+ # _In_ UINT uExitCode )
301
+ attach_function 'TerminateJobObject', [:handle, :uint], :bool
302
+
303
+ #BOOL WINAPI TerminateProcess(
304
+ # _In_ HANDLE hProcess,
305
+ # _In_ UINT uExitCode )
306
+ attach_function 'TerminateProcess', [:ulong, :uint], :bool
307
+
308
+ if WindowsVersion.sp >= 1 || WindowsVersion >= :vista
309
+
310
+ #BOOL WINAPI GetProcessHandleCount(
311
+ # _In_ HANDLE hProcess,
312
+ # _Inout_ PDWORD pdwHandleCount )
313
+ attach_function 'GetProcessHandleCount', [:handle, :pointer], :bool
314
+
315
+ #DWORD WINAPI GetProcessId( _In_ HANDLE Process )
316
+ attach_function 'GetProcessId', [:handle], :ulong
317
+
318
+ if WindowsVersion.sp >= 2 || WindowsVersion >= :vista
319
+
320
+ #BOOL WINAPI IsWow64Process(
321
+ # _In_ HANDLE hProcess,
322
+ # _Out_ PBOOL Wow64Process )
323
+ attach_function 'IsWow64Process', [:ulong, :pointer], :bool
324
+
325
+ end
326
+ end
327
+
328
+ if WindowsVersion >= :vista
329
+
330
+ #BOOL WINAPI GetProcessWorkingSetSizeEx(
331
+ # _In_ HANDLE hProcess,
332
+ # _Out_ PSIZE_T lpMinimumWorkingSetSize,
333
+ # _Out_ PSIZE_T lpMaximumWorkingSetSize,
334
+ # _Out_ PDWORD Flags )
335
+ attach_function 'GetProcessWorkingSetSizeEx', [:handle, :pointer, :pointer, :pointer], :ulong
336
+ end
337
+
338
+ # Helper method to determine if you're on a 64 bit version of Windows
339
+ def windows_64?
340
+ bool = false
341
+
342
+ if respond_to?(:IsWow64Process, true)
343
+ pbool = FFI::MemoryPointer.new(:int)
344
+
345
+ # The IsWow64Process function will return false for a 64 bit process,
346
+ # so we check using both the address size and IsWow64Process.
347
+ if FFI::Platform::ADDRESS_SIZE == 64
348
+ bool = true
349
+ else
350
+ if IsWow64Process(GetCurrentProcess(), pbool)
351
+ bool = true if pbool.read_int == 1
352
+ end
353
+ end
354
+ end
355
+
356
+ bool
357
+ end
358
+ end
359
+ end
@@ -0,0 +1,141 @@
1
+ require 'win-ffi/functions/kernel32'
2
+
3
+ module WinFFI
4
+ module Kernel32
5
+
6
+ typedef :ushort, :langid
7
+ typedef :pointer, :hrsrc
8
+
9
+ #HANDLE WINAPI BeginUpdateResource(
10
+ # _In_ LPCTSTR pFileName,
11
+ # _In_ BOOL bDeleteExistingResources )
12
+ attach_function 'BeginUpdateResourceA', [:string, :bool], :handle
13
+ attach_function 'BeginUpdateResourceW', [:string, :bool], :handle
14
+
15
+ #BOOL WINAPI EndUpdateResource(
16
+ # _In_ HANDLE hUpdate,
17
+ # _In_ BOOL fDiscard )
18
+ attach_function 'EndUpdateResourceA', [:handle, :bool], :bool
19
+ attach_function 'EndUpdateResourceW', [:handle, :bool], :bool
20
+
21
+ #BOOL CALLBACK EnumResLangProc(
22
+ # _In_opt_ HMODULE hModule,
23
+ # _In_ LPCTSTR lpszType,
24
+ # _In_ LPCTSTR lpszName,
25
+ # _In_ WORD wIDLanguage,
26
+ # _In_ LONG_PTR lParam )
27
+ callback 'EnumResLangProc', [:hmodule, :string, :string, :word, :long], :bool
28
+
29
+ #BOOL CALLBACK EnumResNameProc(
30
+ # _In_opt_ HMODULE hModule,
31
+ # _In_ LPCTSTR lpszType,
32
+ # _In_ LPTSTR lpszName,
33
+ # _In_ LONG_PTR lParam )
34
+ callback 'EnumResNameProc', [:hmodule, :pointer, :pointer, :long], :bool
35
+
36
+ #BOOL WINAPI EnumResourceLanguages(
37
+ # _In_ HMODULE hModule,
38
+ # _In_ LPCTSTR lpType,
39
+ # _In_ LPCTSTR lpName,
40
+ # _In_ ENUMRESLANGPROC lpEnumFunc,
41
+ # _In_ LONG_PTR lParam )
42
+ attach_function 'EnumResourceLanguagesA', [:hmodule, :pointer, :pointer, :pointer, :lparam], :bool
43
+ attach_function 'EnumResourceLanguagesW', [:hmodule, :pointer, :pointer, :pointer, :lparam], :bool
44
+
45
+ #BOOL WINAPI EnumResourceNames(
46
+ # _In_opt_ HMODULE hModule,
47
+ # _In_ LPCTSTR lpszType,
48
+ # _In_ ENUMRESNAMEPROC lpEnumFunc,
49
+ # _In_ LONG_PTR lParam )
50
+ attach_function 'EnumResourceNamesA', [:hmodule, :pointer, :pointer, :lparam], :bool
51
+ attach_function 'EnumResourceNamesW', [:hmodule, :pointer, :pointer, :lparam], :bool
52
+
53
+ #BOOL WINAPI EnumResourceTypes(
54
+ # _In_opt_ HMODULE hModule,
55
+ # _In_ ENUMRESTYPEPROC lpEnumFunc,
56
+ # _In_ LONG_PTR lParam )
57
+ attach_function 'EnumResourceTypesA', [:hmodule, :pointer, :long], :bool
58
+ attach_function 'EnumResourceTypesW', [:hmodule, :pointer, :long], :bool
59
+
60
+ #BOOL CALLBACK EnumResTypeProc(
61
+ # _In_opt_ HMODULE hModule,
62
+ # _In_ LPTSTR lpszType,
63
+ # _In_ LONG_PTR lParam )
64
+ callback 'EnumResTypeProc', [:hmodule, :string, :long], :bool
65
+
66
+ #HRSRC WINAPI FindResource(
67
+ # _In_opt_ HMODULE hModule,
68
+ # _In_ LPCTSTR lpName,
69
+ # _In_ LPCTSTR lpType )
70
+ attach_function 'FindResourceA', [:hmodule, :pointer, :pointer], :hrsrc
71
+ attach_function 'FindResourceW', [:hmodule, :pointer, :pointer], :hrsrc
72
+
73
+ #HRSRC WINAPI FindResourceEx(
74
+ # _In_opt_ HMODULE hModule,
75
+ # _In_ LPCTSTR lpType,
76
+ # _In_ LPCTSTR lpName,
77
+ # _In_ WORD wLanguage )
78
+ attach_function 'FindResourceExA', [:hmodule, :pointer, :pointer, :word], :hrsrc
79
+ attach_function 'FindResourceExW', [:hmodule, :pointer, :pointer, :word], :hrsrc
80
+
81
+ #BOOL WINAPI FreeResource( _In_ HGLOBAL hglbResource )
82
+ attach_function 'FreeResource', [:hglobal], :bool
83
+
84
+ #HGLOBAL WINAPI LoadResource(
85
+ # _In_opt_ HMODULE hModule,
86
+ # _In_ HRSRC hResInfo )
87
+ attach_function 'LoadResource', [:hmodule, :hrsrc], :hglobal
88
+
89
+ #LPVOID WINAPI LockResource( _In_ HGLOBAL hResData )
90
+ attach_function 'LockResource', [:hglobal], :pointer
91
+
92
+ #DWORD WINAPI SizeofResource(
93
+ # _In_opt_ HMODULE hModule,
94
+ # _In_ HRSRC hResInfo )
95
+ attach_function 'SizeofResource', [:dword, :hmodule, :hrsrc], :dword
96
+
97
+ #BOOL WINAPI UpdateResource(
98
+ # _In_ HANDLE hUpdate,
99
+ # _In_ LPCTSTR lpType,
100
+ # _In_ LPCTSTR lpName,
101
+ # _In_ WORD wLanguage,
102
+ # _In_opt_ LPVOID lpData,
103
+ # _In_ DWORD cbData )
104
+ attach_function 'UpdateResourceA', [:handle, :pointer, :pointer, :word, :pointer, :dword], :bool
105
+ attach_function 'UpdateResourceW', [:handle, :pointer, :pointer, :word, :pointer, :dword], :bool
106
+
107
+ if WindowsVersion >= :vista
108
+
109
+ #BOOL WINAPI EnumResourceLanguagesEx(
110
+ # _In_ HMODULE hModule,
111
+ # _In_ LPCTSTR lpType,
112
+ # _In_ LPCTSTR lpName,
113
+ # _In_ ENUMRESLANGPROC lpEnumFunc,
114
+ # _In_ LONG_PTR lParam,
115
+ # _In_ DWORD dwFlags,
116
+ # _In_ LANGID LangId )
117
+ attach_function 'EnumResourceLanguagesExA', [:hmodule, :pointer, :pointer, :pointer, :long, :dword, :langid], :bool
118
+ attach_function 'EnumResourceLanguagesExW', [:hmodule, :pointer, :pointer, :pointer, :long, :dword, :langid], :bool
119
+
120
+ #BOOL WINAPI EnumResourceNamesEx(
121
+ # _In_opt_ HMODULE hModule,
122
+ # _In_ LPCTSTR lpszType,
123
+ # _In_ ENUMRESNAMEPROC lpEnumFunc,
124
+ # _In_ LONG_PTR lParam,
125
+ # _In_ DWORD dwFlags,
126
+ # _In_ LANGID LangId )
127
+ attach_function 'EnumResourceNamesExA', [:hmodule, :pointer, :pointer, :lparam, :dword, :langid], :bool
128
+ attach_function 'EnumResourceNamesExW', [:hmodule, :pointer, :pointer, :lparam, :dword, :langid], :bool
129
+
130
+ #BOOL WINAPI EnumResourceTypesEx(
131
+ # _In_opt_ HMODULE hModule,
132
+ # _In_ ENUMRESTYPEPROC lpEnumFunc,
133
+ # _In_ LONG_PTR lParam,
134
+ # _In_ DWORD dwFlags,
135
+ # _In_ LANGID LangId )
136
+ attach_function 'EnumResourceTypesExA', [:hmodule, :pointer, :long, :dword, :langid], :bool
137
+ attach_function 'EnumResourceTypesExW', [:hmodule, :pointer, :long, :dword, :langid], :bool
138
+
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,10 @@
1
+ require 'win-ffi/functions/kernel32'
2
+
3
+ module WinFFI
4
+ module Kernel32
5
+ #BOOL WINAPI Beep(
6
+ # _In_ DWORD dwFreq,
7
+ # _In_ DWORD dwDuration )
8
+ (attach_function :Beep, [:ulong, :ulong], :bool) if WindowsVersion >= :xp
9
+ end
10
+ end
@@ -0,0 +1,38 @@
1
+ require 'win-ffi/functions/kernel32'
2
+
3
+ module WinFFI
4
+ module Kernel32
5
+ #Warning Do not use. Consider using StringCchCat instead.
6
+ #LPTSTR WINAPI lstrcat(
7
+ # _Inout_ LPTSTR lpString1,
8
+ # _In_ LPTSTR lpString2 )
9
+ attach_function 'lstrcatA', [:string, :string], :pointer
10
+ attach_function 'lstrcatW', [:string, :string], :pointer
11
+
12
+ #int WINAPI lstrcmp(
13
+ # _In_ LPCTSTR lpString1,
14
+ # _In_ LPCTSTR lpString2 )
15
+ attach_function 'lstrcmp', [:string, :string], :int
16
+
17
+ #int WINAPI lstrcmpi(
18
+ # _In_ LPCTSTR lpString1,
19
+ # _In_ LPCTSTR lpString2 )
20
+ attach_function 'lstrcmpi', [:string, :string], :int
21
+
22
+ # Warning Do not use. Consider using StringCchCopy instead
23
+ #LPTSTR WINAPI lstrcpy(
24
+ # _Out_ LPTSTR lpString1,
25
+ # _In_ LPTSTR lpString2 )
26
+ attach_function 'lstrcpy', [:string, :string], :pointer
27
+
28
+ #Warning Do not use. Consider using StringCchCopy instead.
29
+ #LPTSTR WINAPI lstrcpyn(
30
+ # _Out_ LPTSTR lpString1,
31
+ # _In_ LPCTSTR lpString2,
32
+ # _In_ int iMaxLength )
33
+ attach_function 'lstrcpyn', [:string, :string, :int], :pointer
34
+
35
+ #int WINAPI lstrlen( _In_ LPCTSTR lpString )
36
+ attach_function 'lstrlen', [:string], :int
37
+ end
38
+ end