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,478 @@
1
+ require 'win-ffi/functions/kernel32'
2
+
3
+ require 'win-ffi/enums/kernel32/global_alloc_flags'
4
+ require 'win-ffi/enums/kernel32/heap_flags'
5
+ require 'win-ffi/enums/kernel32/local_flags'
6
+ require 'win-ffi/enums/kernel32/memory_flags'
7
+ require 'win-ffi/enums/kernel32/memory_protection_constants'
8
+
9
+ module WinFFI
10
+ module Kernel32
11
+
12
+ typedef :pointer, :hlocal
13
+
14
+ #BOOL WINAPI AddSecureMemoryCacheCallback( _In_ PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack )
15
+ attach_function 'AddSecureMemoryCacheCallback', [:pointer], :bool
16
+
17
+ #BOOL WINAPI AllocateUserPhysicalPages(
18
+ # _In_ HANDLE hProcess,
19
+ # _Inout_ PULONG_PTR NumberOfPages,
20
+ # _Out_ PULONG_PTR UserPfnArray )
21
+ attach_function 'AllocateUserPhysicalPages', [:handle, :pointer, :pointer], :bool
22
+
23
+ #BOOL WINAPI AllocateUserPhysicalPagesNuma(
24
+ # _In_ HANDLE hProcess,
25
+ # _Inout_ PULONG_PTR NumberOfPages,
26
+ # _Out_ PULONG_PTR PageArray,
27
+ # _In_ DWORD nndPreferred )
28
+ attach_function 'AllocateUserPhysicalPagesNuma', [:handle, :pointer, :pointer, :dword], :bool
29
+
30
+ #void CopyMemory(
31
+ # _In_ PVOID Destination,
32
+ # _In_ const VOID *Source,
33
+ # _In_ SIZE_T Length )
34
+ #attach_function 'RtlCopyMemory', [:pointer, :pointer, :size_t], :void
35
+
36
+ #HANDLE WINAPI CreateFileMapping(
37
+ # _In_ HANDLE hFile,
38
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes,
39
+ # _In_ DWORD flProtect,
40
+ # _In_ DWORD dwMaximumSizeHigh,
41
+ # _In_ DWORD dwMaximumSizeLow,
42
+ # _In_opt_ LPCTSTR lpName )
43
+ attach_function 'CreateFileMappingA', [:handle, :pointer, :dword, :dword, :dword, :string], :handle
44
+ attach_function 'CreateFileMappingW', [:handle, :pointer, :dword, :dword, :dword, :string], :handle
45
+
46
+ #HANDLE WINAPI CreateFileMappingNuma(
47
+ # _In_ HANDLE hFile,
48
+ # _In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
49
+ # _In_ DWORD flProtect,
50
+ # _In_ DWORD dwMaximumSizeHigh,
51
+ # _In_ DWORD dwMaximumSizeLow,
52
+ # _In_opt_ LPCTSTR lpName,
53
+ # _In_ DWORD nndPreferred )
54
+ attach_function 'CreateFileMappingNumaA', [:handle, :pointer, :dword, :dword, :dword, :string, :dword], :handle
55
+ attach_function 'CreateFileMappingNumaW', [:handle, :pointer, :dword, :dword, :dword, :string, :dword], :handle
56
+
57
+ #HANDLE WINAPI CreateMemoryResourceNotification( _In_ MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType )
58
+ attach_function 'CreateMemoryResourceNotification', [:int], :handle
59
+
60
+ #void FillMemory(
61
+ # [out] PVOID Destination,
62
+ # [in] SIZE_T Length,
63
+ # [in] BYTE Fill )
64
+ attach_function 'RtlFillMemory', [:pointer, :size_t, :byte], :void
65
+
66
+ #BOOL WINAPI FlushViewOfFile(
67
+ # _In_ LPCVOID lpBaseAddress,
68
+ # _In_ SIZE_T dwNumberOfBytesToFlush )
69
+ attach_function 'FlushViewOfFile', [:pointer, :size_t], :bool
70
+
71
+ #BOOL WINAPI FreeUserPhysicalPages(
72
+ # _In_ HANDLE hProcess,
73
+ # _Inout_ PULONG_PTR NumberOfPages,
74
+ # _In_ PULONG_PTR UserPfnArray )
75
+ attach_function 'FreeUserPhysicalPages', [:handle, :pointer, :pointer], :bool
76
+
77
+ #SIZE_T WINAPI GetLargePageMinimum(void)
78
+ attach_function 'GetLargePageMinimum', [], :size_t
79
+
80
+ #BOOL WINAPI GetPhysicallyInstalledSystemMemory( _Out_ PULONGLONG TotalMemoryInKilobytes )
81
+ attach_function 'GetPhysicallyInstalledSystemMemory', [:pointer], :bool
82
+
83
+ #BOOL WINAPI GetProcessDEPPolicy(
84
+ # _In_ HANDLE hProcess,
85
+ # _Out_ LPDWORD lpFlags,
86
+ # _Out_ PBOOL lpPermanent )
87
+ attach_function 'GetProcessDEPPolicy', [:handle, :pointer, :pointer], :bool
88
+
89
+ #DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void)
90
+ attach_function 'GetSystemDEPPolicy', [], :uint
91
+
92
+ #BOOL WINAPI GetSystemFileCacheSize(
93
+ # _Out_ PSIZE_T lpMinimumFileCacheSize,
94
+ # _Out_ PSIZE_T lpMaximumFileCacheSize,
95
+ # _Out_ PDWORD lpFlags )
96
+ attach_function 'GetSystemFileCacheSize', [:pointer, :pointer, :pointer], :bool
97
+
98
+ #UINT WINAPI GetWriteWatch(
99
+ # _In_ DWORD dwFlags,
100
+ # _In_ PVOID lpBaseAddress,
101
+ # _In_ SIZE_T dwRegionSize,
102
+ # _Out_ PVOID *lpAddresses,
103
+ # _Inout_ PULONG_PTR lpdwCount,
104
+ # _Out_ PULONG lpdwGranularity )
105
+ attach_function 'GetWriteWatch', [:dword, :pointer, :size_t, :pointer, :pointer, :pointer], :uint
106
+
107
+ #BOOL WINAPI IsBadCodePtr( _In_ FARPROC lpfn )
108
+ attach_function 'IsBadCodePtr', [:pointer], :bool
109
+
110
+ #BOOL WINAPI IsBadReadPtr(
111
+ # _In_ const VOID *lp,
112
+ # _In_ UINT_PTR ucb )
113
+ attach_function 'IsBadReadPtr', [:pointer, :uint], :bool
114
+
115
+ #BOOL WINAPI IsBadStringPtr(
116
+ # _In_ LPCTSTR lpsz,
117
+ # _In_ UINT_PTR ucchMax )
118
+ attach_function 'IsBadStringPtrA', [:string, :uint], :bool
119
+ attach_function 'IsBadStringPtrW', [:string, :uint], :bool
120
+
121
+ #BOOL WINAPI IsBadWritePtr(
122
+ # _In_ LPVOID lp,
123
+ # _In_ UINT_PTR ucb )
124
+ attach_function 'IsBadWritePtr', [:pointer, :uint], :bool
125
+
126
+ #LPVOID WINAPI MapViewOfFile(
127
+ # _In_ HANDLE hFileMappingObject,
128
+ # _In_ DWORD dwDesiredAccess,
129
+ # _In_ DWORD dwFileOffsetHigh,
130
+ # _In_ DWORD dwFileOffsetLow,
131
+ # _In_ SIZE_T dwNumberOfBytesToMap )
132
+ attach_function 'MapViewOfFile', [:handle, :dword, :dword, :dword, :size_t], :pointer
133
+
134
+ #LPVOID WINAPI MapViewOfFileEx(
135
+ # _In_ HANDLE hFileMappingObject,
136
+ # _In_ DWORD dwDesiredAccess,
137
+ # _In_ DWORD dwFileOffsetHigh,
138
+ # _In_ DWORD dwFileOffsetLow,
139
+ # _In_ SIZE_T dwNumberOfBytesToMap,
140
+ # _In_opt_ LPVOID lpBaseAddress )
141
+ attach_function 'MapViewOfFileEx', [:handle, :dword, :dword, :dword, :size_t, :pointer], :pointer
142
+
143
+ #LPVOID WINAPI MapViewOfFileExNuma(
144
+ # _In_ HANDLE hFileMappingObject,
145
+ # _In_ DWORD dwDesiredAccess,
146
+ # _In_ DWORD dwFileOffsetHigh,
147
+ # _In_ DWORD dwFileOffsetLow,
148
+ # _In_ SIZE_T dwNumberOfBytesToMap,
149
+ # _In_opt_ LPVOID lpBaseAddress,
150
+ # _In_ DWORD nndPreferred )
151
+ attach_function 'MapViewOfFileExNuma', [:handle, :dword, :dword, :dword, :size_t, :pointer, :dword], :pointer
152
+
153
+ #BOOL WINAPI MapUserPhysicalPages(
154
+ # _In_ PVOID lpAddress,
155
+ # _In_ ULONG_PTR NumberOfPages,
156
+ # _In_ PULONG_PTR UserPfnArray )
157
+ attach_function 'MapUserPhysicalPages', [:pointer, :ulong, :pointer], :bool
158
+
159
+ #BOOL WINAPI MapUserPhysicalPagesScatter(
160
+ # _In_ PVOID *VirtualAddresses,
161
+ # _In_ ULONG_PTR NumberOfPages,
162
+ # _In_ PULONG_PTR PageArray )
163
+ attach_function 'MapUserPhysicalPagesScatter', [:pointer, :ulong, :pointer], :bool
164
+
165
+ #void MoveMemory(
166
+ # _In_ PVOID Destination,
167
+ # _In_ const VOID *Source,
168
+ # _In_ SIZE_T Length )
169
+ attach_function 'RtlMoveMemory', [:pointer, :pointer, :size_t], :void
170
+
171
+ #HANDLE WINAPI OpenFileMapping(
172
+ # _In_ DWORD dwDesiredAccess,
173
+ # _In_ BOOL bInheritHandle,
174
+ # _In_ LPCTSTR lpName )
175
+ attach_function 'OpenFileMappingA', [:dword, :bool, :string], :handle
176
+ attach_function 'OpenFileMappingW', [:dword, :bool, :string], :handle
177
+
178
+ #BOOL WINAPI QueryMemoryResourceNotification(
179
+ # _In_ HANDLE ResourceNotificationHandle,
180
+ # _Out_ PBOOL ResourceState )
181
+ attach_function 'QueryMemoryResourceNotification', [:handle, :pointer], :bool
182
+
183
+
184
+ #BOOL WINAPI RemoveSecureMemoryCacheCallback( _In_ PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack )
185
+ attach_function 'RemoveSecureMemoryCacheCallback', [:pointer], :bool
186
+
187
+ #UINT WINAPI ResetWriteWatch(
188
+ # _In_ LPVOID lpBaseAddress,
189
+ # _In_ SIZE_T dwRegionSize )
190
+ attach_function 'ResetWriteWatch', [:pointer, :size_t], :uint
191
+
192
+ #BOOLEAN CALLBACK SecureMemoryCacheCallback(
193
+ # _In_ PVOID Addr,
194
+ # _In_ SIZE_T Range )
195
+ callback 'SecureMemoryCacheCallback', [:pointer, :size_t], :bool
196
+
197
+ #PVOID SecureZeroMemory(
198
+ # _In_ PVOID ptr,
199
+ # _In_ SIZE_T cnt )
200
+ #attach_function 'SecureZeroMemory', [:pointer, :size_t], :pointer
201
+
202
+ #BOOL WINAPI SetProcessDEPPolicy( _In_ DWORD dwFlags )
203
+ attach_function 'SetProcessDEPPolicy', [:dword], :bool
204
+
205
+ #BOOL WINAPI SetSystemFileCacheSize(
206
+ # _In_ SIZE_T MinimumFileCacheSize,
207
+ # _In_ SIZE_T MaximumFileCacheSize,
208
+ # _In_ DWORD Flags )
209
+ attach_function 'SetSystemFileCacheSize', [:size_t, :size_t, :dword], :bool
210
+
211
+ #BOOL WINAPI UnmapViewOfFile( _In_ LPCVOID lpBaseAddress )
212
+ attach_function 'UnmapViewOfFile', [:pointer], :bool
213
+
214
+ #Global
215
+ #HGLOBAL WINAPI GlobalAlloc(
216
+ # _In_ UINT uFlags,
217
+ # _In_ SIZE_T dwBytes )
218
+ attach_function 'GlobalAlloc', [GlobalAllocFlags, :size_t], :hglobal
219
+
220
+ #UINT WINAPI GlobalFlags( _In_ HGLOBAL hMem )
221
+ attach_function 'GlobalFlags', [:hglobal], :uint
222
+
223
+ #HGLOBAL WINAPI GlobalFree( _In_ HGLOBAL hMem )
224
+ attach_function 'GlobalFree', [:hglobal], :hglobal
225
+
226
+ #HGLOBAL WINAPI GlobalHandle( _In_ LPCVOID pMem )
227
+ attach_function 'GlobalHandle', [:pointer], :hglobal
228
+
229
+ #LPVOID WINAPI GlobalLock( _In_ HGLOBAL hMem )
230
+ attach_function 'GlobalLock', [:hglobal], :pointer
231
+
232
+ #void WINAPI GlobalMemoryStatus( _Out_ LPMEMORYSTATUS lpBuffer )
233
+ attach_function 'GlobalMemoryStatus', [:pointer], :void
234
+
235
+ #BOOL WINAPI GlobalMemoryStatusEx( _Inout_ LPMEMORYSTATUSEX lpBuffer )
236
+ attach_function 'GlobalMemoryStatusEx', [:pointer], :bool
237
+
238
+ #HGLOBAL WINAPI GlobalReAlloc(
239
+ # _In_ HGLOBAL hMem,
240
+ # _In_ SIZE_T dwBytes,
241
+ # _In_ UINT uFlags )
242
+ attach_function 'GlobalReAlloc', [:hglobal, :size_t, :uint], :hglobal
243
+
244
+ #SIZE_T WINAPI GlobalSize( _In_ HGLOBAL hMem )
245
+ attach_function 'GlobalSize', [:hglobal], :size_t
246
+
247
+ #BOOL WINAPI GlobalUnlock( _In_ HGLOBAL hMem )
248
+ attach_function 'GlobalUnlock', [:hglobal], :bool
249
+
250
+
251
+ #Heap
252
+ #HANDLE WINAPI GetProcessHeap(void)
253
+ attach_function 'GetProcessHeap', [:void], :handle
254
+
255
+ #DWORD WINAPI GetProcessHeaps(
256
+ # _In_ DWORD NumberOfHeaps,
257
+ # _Out_ PHANDLE ProcessHeaps )
258
+ attach_function 'GetProcessHeaps', [:dword, :pointer], :dword
259
+
260
+ #LPVOID WINAPI HeapAlloc(
261
+ # _In_ HANDLE hHeap,
262
+ # _In_ DWORD dwFlags,
263
+ # _In_ SIZE_T dwBytes )
264
+ attach_function 'HeapAlloc', [:handle, HeapFlags, :size_t], :pointer
265
+
266
+ #SIZE_T WINAPI HeapCompact(
267
+ # _In_ HANDLE hHeap,
268
+ # _In_ DWORD dwFlags )
269
+ attach_function 'HeapCompact', [:handle, HeapFlags], :size_t
270
+
271
+ #HANDLE WINAPI HeapCreate(
272
+ # _In_ DWORD flOptions,
273
+ # _In_ SIZE_T dwInitialSize,
274
+ # _In_ SIZE_T dwMaximumSize )
275
+ attach_function 'HeapCreate', [HeapFlags, :size_t, :size_t], :handle
276
+
277
+ #BOOL WINAPI HeapDestroy( _In_ HANDLE hHeap )
278
+ attach_function 'HeapDestroy', [:handle], :bool
279
+
280
+ #BOOL WINAPI HeapFree(
281
+ # _In_ HANDLE hHeap,
282
+ # _In_ DWORD dwFlags,
283
+ # _In_ LPVOID lpMem )
284
+ attach_function 'HeapFree', [:handle, HeapFlags, :pointer], :bool
285
+
286
+ #BOOL WINAPI HeapLock( _In_ HANDLE hHeap )
287
+ attach_function 'HeapLock', [:handle], :bool
288
+
289
+ #BOOL WINAPI HeapQueryInformation(
290
+ # _In_opt_ HANDLE HeapHandle,
291
+ # _In_ HEAP_INFORMATION_CLASS HeapInformationClass,
292
+ # _Out_ PVOID HeapInformation,
293
+ # _In_ SIZE_T HeapInformationLength,
294
+ # _Out_opt_ PSIZE_T ReturnLength )
295
+ attach_function 'HeapQueryInformation', [:handle, :int, :pointer, :size_t, :pointer], :bool
296
+
297
+ #LPVOID WINAPI HeapReAlloc(
298
+ # _In_ HANDLE hHeap,
299
+ # _In_ DWORD dwFlags,
300
+ # _In_ LPVOID lpMem,
301
+ # _In_ SIZE_T dwBytes )
302
+ attach_function 'HeapReAlloc', [:handle, HeapFlags, :pointer, :size_t], :pointer
303
+
304
+ #BOOL WINAPI HeapSetInformation(
305
+ # _In_opt_ HANDLE HeapHandle,
306
+ # _In_ HEAP_INFORMATION_CLASS HeapInformationClass,
307
+ # _In_ PVOID HeapInformation,
308
+ # _In_ SIZE_T HeapInformationLength )
309
+ attach_function 'HeapSetInformation', [:handle, :int, :pointer, :size_t], :bool
310
+
311
+ #SIZE_T WINAPI HeapSize(
312
+ # _In_ HANDLE hHeap,
313
+ # _In_ DWORD dwFlags,
314
+ # _In_ LPCVOID lpMem )
315
+ attach_function 'HeapSize', [:handle, HeapFlags, :pointer], :size_t
316
+
317
+ #BOOL WINAPI HeapUnlock( _In_ HANDLE hHeap )
318
+ attach_function 'HeapUnlock', [:handle], :bool
319
+
320
+ #BOOL WINAPI HeapValidate(
321
+ # _In_ HANDLE hHeap,
322
+ # _In_ DWORD dwFlags,
323
+ # _In_opt_ LPCVOID lpMem )
324
+ attach_function 'HeapValidate', [:handle, HeapFlags, :pointer], :bool
325
+
326
+ #BOOL WINAPI HeapWalk(
327
+ # _In_ HANDLE hHeap,
328
+ # _Inout_ LPPROCESS_HEAP_ENTRY lpEntry )
329
+ attach_function 'HeapWalk', [:handle, :pointer], :bool
330
+
331
+
332
+ #Local
333
+ #HLOCAL WINAPI LocalAlloc(
334
+ # _In_ UINT uFlags,
335
+ # _In_ SIZE_T uBytes )
336
+ attach_function 'LocalAlloc', [LocalFlags, :size_t], :ulong
337
+
338
+ #UINT WINAPI LocalFlags( _In_ HLOCAL hMem )
339
+ attach_function 'LocalFlags', [:hlocal], :uint
340
+
341
+ #HLOCAL WINAPI LocalFree( _In_ HLOCAL hMem )
342
+ attach_function 'LocalFree', [:hlocal], :hlocal
343
+
344
+ #HLOCAL WINAPI LocalHandle( _In_ LPCVOID pMem )
345
+ attach_function 'LocalHandle', [:pointer], :hlocal
346
+
347
+ #LPVOID WINAPI LocalLock( _In_ HLOCAL hMem )
348
+ attach_function 'LocalLock', [:hlocal], :pointer
349
+
350
+ #HLOCAL WINAPI LocalReAlloc(
351
+ # _In_ HLOCAL hMem,
352
+ # _In_ SIZE_T uBytes,
353
+ # _In_ UINT uFlags )
354
+ attach_function 'LocalReAlloc', [:hlocal, :size_t, LocalFlags], :hlocal
355
+
356
+ #UINT WINAPI LocalSize( _In_ HLOCAL hMem )
357
+ attach_function 'LocalSize', [:hlocal], :uint
358
+
359
+ #BOOL WINAPI LocalUnlock( _In_ HLOCAL hMem )
360
+ attach_function 'LocalUnlock', [:hlocal], :bool
361
+
362
+
363
+ #Virtual
364
+ #LPVOID WINAPI VirtualAlloc(
365
+ # _In_opt_ LPVOID lpAddress,
366
+ # _In_ SIZE_T dwSize,
367
+ # _In_ DWORD flAllocationType,
368
+ # _In_ DWORD flProtect )
369
+ attach_function 'VirtualAlloc', [:pointer, :size_t, MemoryFlags, MemoryProtectionConstants], :pointer
370
+
371
+ #LPVOID WINAPI VirtualAllocEx(
372
+ # _In_ HANDLE hProcess,
373
+ # _In_opt_ LPVOID lpAddress,
374
+ # _In_ SIZE_T dwSize,
375
+ # _In_ DWORD flAllocationType,
376
+ # _In_ DWORD flProtect )
377
+ attach_function 'VirtualAllocEx', [:handle, :pointer, :size_t, MemoryFlags, MemoryProtectionConstants], :pointer
378
+
379
+ #LPVOID WINAPI VirtualAllocExNuma(
380
+ # _In_ HANDLE hProcess,
381
+ # _In_opt_ LPVOID lpAddress,
382
+ # _In_ SIZE_T dwSize,
383
+ # _In_ DWORD flAllocationType,
384
+ # _In_ DWORD flProtect,
385
+ # _In_ DWORD nndPreferred )
386
+ attach_function 'VirtualAllocExNuma', [:handle, :pointer, :size_t, :dword, :dword, :dword], :pointer
387
+
388
+ #BOOL WINAPI VirtualFree(
389
+ # _In_ LPVOID lpAddress,
390
+ # _In_ SIZE_T dwSize,
391
+ # _In_ DWORD dwFreeType )
392
+ attach_function 'VirtualFree', [:pointer, :size_t, MemoryFlags], :bool
393
+
394
+ #BOOL WINAPI VirtualFreeEx(
395
+ # _In_ HANDLE hProcess,
396
+ # _In_ LPVOID lpAddress,
397
+ # _In_ SIZE_T dwSize,
398
+ # _In_ DWORD dwFreeType )
399
+ attach_function 'VirtualFreeEx', [:handle, :pointer, :size_t, MemoryFlags], :bool
400
+
401
+ #BOOL WINAPI VirtualLock(
402
+ # _In_ LPVOID lpAddress,
403
+ # _In_ SIZE_T dwSize )
404
+ attach_function 'VirtualLock', [:pointer, :size_t], :bool
405
+
406
+ #BOOL WINAPI VirtualProtect(
407
+ # _In_ LPVOID lpAddress,
408
+ # _In_ SIZE_T dwSize,
409
+ # _In_ DWORD flNewProtect,
410
+ # _Out_ PDWORD lpflOldProtect )
411
+ attach_function 'VirtualProtect', [:pointer, :size_t, MemoryProtectionConstants, :pointer], :bool
412
+
413
+ #BOOL WINAPI VirtualProtectEx(
414
+ # _In_ HANDLE hProcess,
415
+ # _In_ LPVOID lpAddress,
416
+ # _In_ SIZE_T dwSize,
417
+ # _In_ DWORD flNewProtect,
418
+ # _Out_ PDWORD lpflOldProtect )
419
+ attach_function 'VirtualProtectEx', [:handle, :pointer, :size_t, MemoryProtectionConstants, :pointer], :bool
420
+
421
+ #SIZE_T WINAPI VirtualQuery(
422
+ # _In_opt_ LPCVOID lpAddress,
423
+ # _Out_ PMEMORY_BASIC_INFORMATION lpBuffer,
424
+ # _In_ SIZE_T dwLength )
425
+ attach_function 'VirtualQuery', [:pointer, :pointer, :size_t], :size_t
426
+
427
+ #SIZE_T WINAPI VirtualQueryEx(
428
+ # _In_ HANDLE hProcess,
429
+ # _In_opt_ LPCVOID lpAddress,
430
+ # _Out_ PMEMORY_BASIC_INFORMATION lpBuffer,
431
+ # _In_ SIZE_T dwLength )
432
+ attach_function 'VirtualQueryEx', [:handle, :pointer, :pointer, :size_t], :size_t
433
+
434
+ #BOOL WINAPI VirtualUnlock(
435
+ # _In_ LPVOID lpAddress,
436
+ # _In_ SIZE_T dwSize )
437
+ attach_function 'VirtualUnlock', [:pointer, :size_t], :bool
438
+
439
+ #void ZeroMemory(
440
+ # [in] PVOID Destination,
441
+ # [in] SIZE_T Length )
442
+ attach_function 'RtlZeroMemory', [:pointer, :size_t], :void
443
+
444
+ if WinFFI::WindowsVersion >= 8
445
+
446
+ #HANDLE WINAPI CreateFileMappingFromApp(
447
+ # _In_ HANDLE hFile,
448
+ # _In_opt_ PSECURITY_ATTRIBUTES SecurityAttributes,
449
+ # _In_ ULONG PageProtection,
450
+ # _In_ ULONG64 MaximumSize,
451
+ # _In_opt_ PCWSTR Name )
452
+ attach_function 'CreateFileMappingFromApp', [:handle, :pointer, :ulong, :ulong, :string], :handle
453
+
454
+ #BOOL WINAPI GetMemoryErrorHandlingCapabilities( _Out_ PULONG Capabilities )
455
+ attach_function 'GetMemoryErrorHandlingCapabilities', [:pointer], :bool
456
+
457
+ #PVOID WINAPI MapViewOfFileFromApp(
458
+ # _In_ HANDLE hFileMappingObject,
459
+ # _In_ ULONG DesiredAccess,
460
+ # _In_ ULONG64 FileOffset,
461
+ # _In_ SIZE_T NumberOfBytesToMap )
462
+ attach_function 'MapViewOfFileFromApp', [:handle, :ulong, :ulong, :size_t], :pointer
463
+
464
+ #BOOL WINAPI PrefetchVirtualMemory(
465
+ # _In_ HANDLE hProcess,
466
+ # _In_ ULONG_PTR NumberOfEntries,
467
+ # _In_ PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses,
468
+ # _In_ ULONG Flags )
469
+ attach_function 'PrefetchVirtualMemory', [:handle, :ulong, :pointer, :ulong], :bool
470
+
471
+ #PVOID WINAPI RegisterBadMemoryNotification( _In_ PBAD_MEMORY_CALLBACK_ROUTINE Callback )
472
+ attach_function 'RegisterBadMemoryNotification', [:pointer], :pointer
473
+
474
+ #BOOL WINAPI UnregisterBadMemoryNotification( _In_ PVOID RegistrationHandle )
475
+ attach_function 'UnregisterBadMemoryNotification', [:pointer], :bool
476
+ end
477
+ end
478
+ end