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.
- checksums.yaml +7 -0
- data/README.md +36 -0
- data/lib/win-ffi/enums/color_types.rb +61 -0
- data/lib/win-ffi/enums/comctl32/init_common_controls.rb +32 -0
- data/lib/win-ffi/enums/comctl32/window/style/window_class_style.rb +7 -0
- data/lib/win-ffi/enums/comctl32.rb +5 -0
- data/lib/win-ffi/enums/comdlg32/find_replace.rb +28 -0
- data/lib/win-ffi/enums/comdlg32/font.rb +33 -0
- data/lib/win-ffi/enums/extended_name_format.rb +17 -0
- data/lib/win-ffi/enums/firmware_type.rb +12 -0
- data/lib/win-ffi/enums/gdi32/device_context.rb +29 -0
- data/lib/win-ffi/enums/gdi32/dib.rb +8 -0
- data/lib/win-ffi/enums/gdi32/hatch_styles.rb +15 -0
- data/lib/win-ffi/enums/gdi32/pfd_flags.rb +28 -0
- data/lib/win-ffi/enums/gdi32/pfd_layer_type.rb +7 -0
- data/lib/win-ffi/enums/gdi32/pfd_type.rb +7 -0
- data/lib/win-ffi/enums/gdi32/raster_operations.rb +22 -0
- data/lib/win-ffi/enums/gdi32.rb +90 -0
- data/lib/win-ffi/enums/kernel32/activation_context.rb +17 -0
- data/lib/win-ffi/enums/kernel32/computer_name_format.rb +19 -0
- data/lib/win-ffi/enums/kernel32/format_message_flags.rb +16 -0
- data/lib/win-ffi/enums/kernel32/get_module_handle_ex_flag.rb +7 -0
- data/lib/win-ffi/enums/kernel32/global_alloc_flags.rb +14 -0
- data/lib/win-ffi/enums/kernel32/handle.rb +9 -0
- data/lib/win-ffi/enums/kernel32/heap_flags.rb +14 -0
- data/lib/win-ffi/enums/kernel32/local_flags.rb +20 -0
- data/lib/win-ffi/enums/kernel32/memory.rb +12 -0
- data/lib/win-ffi/enums/kernel32/memory_flags.rb +22 -0
- data/lib/win-ffi/enums/kernel32/memory_protection_constants.rb +20 -0
- data/lib/win-ffi/enums/kernel32/set_error_mode_flags.rb +11 -0
- data/lib/win-ffi/enums/kernel32/sound_flags.rb +24 -0
- data/lib/win-ffi/enums/kernel32/volume.rb +13 -0
- data/lib/win-ffi/enums/kernel32.rb +5 -0
- data/lib/win-ffi/enums/lr.rb +48 -0
- data/lib/win-ffi/enums/netapi21/net_api_status.rb +25 -0
- data/lib/win-ffi/enums/netapi32.rb +5 -0
- data/lib/win-ffi/enums/system_info.rb +54 -0
- data/lib/win-ffi/enums/user32/append_menu_flags.rb +21 -0
- data/lib/win-ffi/enums/user32/border_flags.rb +29 -0
- data/lib/win-ffi/enums/user32/clipboard_formats.rb +31 -0
- data/lib/win-ffi/enums/user32/device_notify_flags.rb +17 -0
- data/lib/win-ffi/enums/user32/draw_caption_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/draw_frame_control_flags.rb +15 -0
- data/lib/win-ffi/enums/user32/draw_frame_control_state_flags.rb +44 -0
- data/lib/win-ffi/enums/user32/edge_flags.rb +20 -0
- data/lib/win-ffi/enums/user32/feedback_type.rb +21 -0
- data/lib/win-ffi/enums/user32/get_ancestor_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/icon.rb +19 -0
- data/lib/win-ffi/enums/user32/image.rb +12 -0
- data/lib/win-ffi/enums/user32/key_event_flags.rb +11 -0
- data/lib/win-ffi/enums/user32/keyboard_layout_flags.rb +57 -0
- data/lib/win-ffi/enums/user32/keyboard_modifiers.rb +16 -0
- data/lib/win-ffi/enums/user32/layered_window_attributes_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/map_virtual_key.rb +22 -0
- data/lib/win-ffi/enums/user32/message_filter.rb +11 -0
- data/lib/win-ffi/enums/user32/mouse_event_flags.rb +25 -0
- data/lib/win-ffi/enums/user32/mouse_keys_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/mwmo.rb +17 -0
- data/lib/win-ffi/enums/user32/ocr.rb +32 -0
- data/lib/win-ffi/enums/user32/oic.rb +26 -0
- data/lib/win-ffi/enums/user32/pen_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/pen_mask.rb +14 -0
- data/lib/win-ffi/enums/user32/pointer_flags.rb +82 -0
- data/lib/win-ffi/enums/user32/pointer_input_type.rb +13 -0
- data/lib/win-ffi/enums/user32/process_dpi_awareness.rb +12 -0
- data/lib/win-ffi/enums/user32/queue_status_flags.rb +36 -0
- data/lib/win-ffi/enums/user32/rim.rb +12 -0
- data/lib/win-ffi/enums/user32/touch_injection_flags.rb +13 -0
- data/lib/win-ffi/enums/user32/touch_mask.rb +13 -0
- data/lib/win-ffi/enums/user32/user_object_information_flags.rb +22 -0
- data/lib/win-ffi/enums/user32/virtual_key_flags.rb +214 -0
- data/lib/win-ffi/enums/user32/window/animate_window_flags.rb +31 -0
- data/lib/win-ffi/enums/user32/window/broadcast_system_flags.rb +20 -0
- data/lib/win-ffi/enums/user32/window/broadcast_system_message_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/window/combo_box_message.rb +53 -0
- data/lib/win-ffi/enums/user32/window/get_class_long_flags.rb +34 -0
- data/lib/win-ffi/enums/user32/window/get_window_flags.rb +38 -0
- data/lib/win-ffi/enums/user32/window/get_window_long_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/window/menu_flags.rb +54 -0
- data/lib/win-ffi/enums/user32/window/message_box_flags.rb +90 -0
- data/lib/win-ffi/enums/user32/window/message_box_return.rb +18 -0
- data/lib/win-ffi/enums/user32/window/notification/button_notification.rb +20 -0
- data/lib/win-ffi/enums/user32/window/notification/edit_notification.rb +19 -0
- data/lib/win-ffi/enums/user32/window/notification/static_notification.rb +13 -0
- data/lib/win-ffi/enums/user32/window/peek_message_flags.rb +13 -0
- data/lib/win-ffi/enums/user32/window/set_window_pos_flags.rb +48 -0
- data/lib/win-ffi/enums/user32/window/show_window_flags.rb +41 -0
- data/lib/win-ffi/enums/user32/window/smto.rb +22 -0
- data/lib/win-ffi/enums/user32/window/style/button_control_style.rb +37 -0
- data/lib/win-ffi/enums/user32/window/style/combo_box_style.rb +22 -0
- data/lib/win-ffi/enums/user32/window/style/edit_style.rb +23 -0
- data/lib/win-ffi/enums/user32/window/style/static_style.rb +45 -0
- data/lib/win-ffi/enums/user32/window/style/window_class_style.rb +50 -0
- data/lib/win-ffi/enums/user32/window/style/window_style.rb +85 -0
- data/lib/win-ffi/enums/user32/window/style/window_style_ex.rb +98 -0
- data/lib/win-ffi/enums/user32/window/system_menu_command.rb +37 -0
- data/lib/win-ffi/enums/user32/window/system_metrics_flags.rb +300 -0
- data/lib/win-ffi/enums/user32/window/system_parameters_info_action.rb +225 -0
- data/lib/win-ffi/enums/user32/window/system_parameters_info_flags.rb +246 -0
- data/lib/win-ffi/enums/user32/window/track_popup_menu_flags.rb +70 -0
- data/lib/win-ffi/enums/user32/window/window_long.rb +22 -0
- data/lib/win-ffi/enums/user32/window/window_messages.rb +222 -0
- data/lib/win-ffi/enums/user32/window_hook.rb +56 -0
- data/lib/win-ffi/enums/user32.rb +5 -0
- data/lib/win-ffi/functions/advapi32/process.rb +33 -0
- data/lib/win-ffi/functions/advapi32/system_info.rb +17 -0
- data/lib/win-ffi/functions/comctl32/control.rb +11 -0
- data/lib/win-ffi/functions/comctl32/listbox.rb +20 -0
- data/lib/win-ffi/functions/comctl32.rb +7 -0
- data/lib/win-ffi/functions/comdlg32/color.rb +9 -0
- data/lib/win-ffi/functions/comdlg32/error.rb +6 -0
- data/lib/win-ffi/functions/comdlg32/find_replace.rb +9 -0
- data/lib/win-ffi/functions/comdlg32/font.rb +9 -0
- data/lib/win-ffi/functions/comdlg32.rb +7 -0
- data/lib/win-ffi/functions/gdi32/bitmap.rb +275 -0
- data/lib/win-ffi/functions/gdi32/brush.rb +54 -0
- data/lib/win-ffi/functions/gdi32/device_context.rb +126 -0
- data/lib/win-ffi/functions/gdi32/filled_shape.rb +68 -0
- data/lib/win-ffi/functions/gdi32/font.rb +9 -0
- data/lib/win-ffi/functions/gdi32/metafile.rb +173 -0
- data/lib/win-ffi/functions/gdi32/opengl.rb +29 -0
- data/lib/win-ffi/functions/gdi32/painting_drawing.rb +50 -0
- data/lib/win-ffi/functions/gdi32/text.rb +376 -0
- data/lib/win-ffi/functions/gdi32.rb +7 -0
- data/lib/win-ffi/functions/kernel32/activation.rb +22 -0
- data/lib/win-ffi/functions/kernel32/dll.rb +92 -0
- data/lib/win-ffi/functions/kernel32/error.rb +28 -0
- data/lib/win-ffi/functions/kernel32/filesystem.rb +22 -0
- data/lib/win-ffi/functions/kernel32/handle.rb +29 -0
- data/lib/win-ffi/functions/kernel32/memory.rb +478 -0
- data/lib/win-ffi/functions/kernel32/process.rb +359 -0
- data/lib/win-ffi/functions/kernel32/resource.rb +141 -0
- data/lib/win-ffi/functions/kernel32/sound.rb +10 -0
- data/lib/win-ffi/functions/kernel32/string.rb +38 -0
- data/lib/win-ffi/functions/kernel32/system_info.rb +183 -0
- data/lib/win-ffi/functions/kernel32/time.rb +220 -0
- data/lib/win-ffi/functions/kernel32/volume.rb +130 -0
- data/lib/win-ffi/functions/kernel32.rb +15 -0
- data/lib/win-ffi/functions/msimg32/bitmap.rb +46 -0
- data/lib/win-ffi/functions/msvcrt/handle.rb +13 -0
- data/lib/win-ffi/functions/netapi32/network_management.rb +13 -0
- data/lib/win-ffi/functions/netapi32.rb +7 -0
- data/lib/win-ffi/functions/ntdll/system_info.rb +14 -0
- data/lib/win-ffi/functions/secur32/system_info.rb +30 -0
- data/lib/win-ffi/functions/shell32/icon.rb +49 -0
- data/lib/win-ffi/functions/shutdown.rb +84 -0
- data/lib/win-ffi/functions/thread.rb +230 -0
- data/lib/win-ffi/functions/user32/accessibility.rb +23 -0
- data/lib/win-ffi/functions/user32/authorization.rb +19 -0
- data/lib/win-ffi/functions/user32/bitmap.rb +11 -0
- data/lib/win-ffi/functions/user32/brush.rb +10 -0
- data/lib/win-ffi/functions/user32/caret.rb +36 -0
- data/lib/win-ffi/functions/user32/clipboard.rb +84 -0
- data/lib/win-ffi/functions/user32/controls/button.rb +23 -0
- data/lib/win-ffi/functions/user32/controls/combobox.rb +29 -0
- data/lib/win-ffi/functions/user32/controls/listbox.rb +25 -0
- data/lib/win-ffi/functions/user32/controls/scrollbar.rb +95 -0
- data/lib/win-ffi/functions/user32/cursor.rb +74 -0
- data/lib/win-ffi/functions/user32/dde.rb +214 -0
- data/lib/win-ffi/functions/user32/desktop.rb +76 -0
- data/lib/win-ffi/functions/user32/device.rb +17 -0
- data/lib/win-ffi/functions/user32/device_context.rb +62 -0
- data/lib/win-ffi/functions/user32/display.rb +37 -0
- data/lib/win-ffi/functions/user32/error.rb +10 -0
- data/lib/win-ffi/functions/user32/filled_shape.rb +23 -0
- data/lib/win-ffi/functions/user32/gesture.rb +38 -0
- data/lib/win-ffi/functions/user32/hook.rb +123 -0
- data/lib/win-ffi/functions/user32/icon.rb +98 -0
- data/lib/win-ffi/functions/user32/input.rb +23 -0
- data/lib/win-ffi/functions/user32/keyboard.rb +177 -0
- data/lib/win-ffi/functions/user32/keyboard_accelerators.rb +37 -0
- data/lib/win-ffi/functions/user32/mouse.rb +60 -0
- data/lib/win-ffi/functions/user32/multiple_display_monitors.rb +43 -0
- data/lib/win-ffi/functions/user32/multiple_document_interface.rb +44 -0
- data/lib/win-ffi/functions/user32/painting_drawing.rb +173 -0
- data/lib/win-ffi/functions/user32/pointer.rb +154 -0
- data/lib/win-ffi/functions/user32/power.rb +28 -0
- data/lib/win-ffi/functions/user32/print.rb +14 -0
- data/lib/win-ffi/functions/user32/process.rb +30 -0
- data/lib/win-ffi/functions/user32/raw_input.rb +55 -0
- data/lib/win-ffi/functions/user32/rect.rb +67 -0
- data/lib/win-ffi/functions/user32/resource.rb +28 -0
- data/lib/win-ffi/functions/user32/shell.rb +29 -0
- data/lib/win-ffi/functions/user32/string.rb +98 -0
- data/lib/win-ffi/functions/user32/text.rb +48 -0
- data/lib/win-ffi/functions/user32/touch.rb +69 -0
- data/lib/win-ffi/functions/user32/transform.rb +22 -0
- data/lib/win-ffi/functions/user32/window/configuration.rb +15 -0
- data/lib/win-ffi/functions/user32/window/dialog.rb +167 -0
- data/lib/win-ffi/functions/user32/window/menu.rb +245 -0
- data/lib/win-ffi/functions/user32/window/message.rb +168 -0
- data/lib/win-ffi/functions/user32/window/properties.rb +50 -0
- data/lib/win-ffi/functions/user32/window/timer.rb +37 -0
- data/lib/win-ffi/functions/user32/window/window.rb +546 -0
- data/lib/win-ffi/functions/user32/window/window_class.rb +109 -0
- data/lib/win-ffi/functions/user32/window/window_proc.rb +29 -0
- data/lib/win-ffi/functions/user32/window_station.rb +39 -0
- data/lib/win-ffi/functions/user32.rb +161 -0
- data/lib/win-ffi/functions/winmm.rb +547 -0
- data/lib/win-ffi/functions/wtsapi32/process.rb +12 -0
- data/lib/win-ffi/lib_base.rb +54 -0
- data/lib/win-ffi/struct.rb +15 -0
- data/lib/win-ffi/structs/comctl32/init_common_controls_ex.rb +10 -0
- data/lib/win-ffi/structs/comdlg32/choose_color.rb +23 -0
- data/lib/win-ffi/structs/comdlg32/choose_font.rb +28 -0
- data/lib/win-ffi/structs/comdlg32/find_replace.rb +24 -0
- data/lib/win-ffi/structs/gdi32/abc.rb +9 -0
- data/lib/win-ffi/structs/gdi32/abcfloat.rb +10 -0
- data/lib/win-ffi/structs/gdi32/bitmap.rb +13 -0
- data/lib/win-ffi/structs/gdi32/bitmap_info.rb +11 -0
- data/lib/win-ffi/structs/gdi32/bitmap_info_header.rb +17 -0
- data/lib/win-ffi/structs/gdi32/blend_function.rb +10 -0
- data/lib/win-ffi/structs/gdi32/display_device.rb +12 -0
- data/lib/win-ffi/structs/gdi32/handle_table.rb +7 -0
- data/lib/win-ffi/structs/gdi32/kerning_pair.rb +9 -0
- data/lib/win-ffi/structs/gdi32/log_brush.rb +10 -0
- data/lib/win-ffi/structs/gdi32/log_font.rb +20 -0
- data/lib/win-ffi/structs/gdi32/meta_file_pict.rb +10 -0
- data/lib/win-ffi/structs/gdi32/palette_entry.rb +10 -0
- data/lib/win-ffi/structs/gdi32/pixel_format_descriptor.rb +57 -0
- data/lib/win-ffi/structs/gdi32/rgb_quad.rb +10 -0
- data/lib/win-ffi/structs/kernel32/actctx.rb +22 -0
- data/lib/win-ffi/structs/netapi32/wksta_info_100.rb +9 -0
- data/lib/win-ffi/structs/os_version_info.rb +10 -0
- data/lib/win-ffi/structs/os_version_info_ex.rb +70 -0
- data/lib/win-ffi/structs/paint_struct.rb +12 -0
- data/lib/win-ffi/structs/point.rb +10 -0
- data/lib/win-ffi/structs/rect.rb +28 -0
- data/lib/win-ffi/structs/size.rb +6 -0
- data/lib/win-ffi/structs/user32/controls/combobox_info.rb +13 -0
- data/lib/win-ffi/structs/user32/controls/scroll_info.rb +13 -0
- data/lib/win-ffi/structs/user32/controls/scrollbar_info.rb +13 -0
- data/lib/win-ffi/structs/user32/cursor_info.rb +10 -0
- data/lib/win-ffi/structs/user32/display_device.rb +12 -0
- data/lib/win-ffi/structs/user32/draw_text_params.rb +11 -0
- data/lib/win-ffi/structs/user32/icon_info.rb +11 -0
- data/lib/win-ffi/structs/user32/icon_info_ex.rb +15 -0
- data/lib/win-ffi/structs/user32/last_input_info.rb +8 -0
- data/lib/win-ffi/structs/user32/mouse_move_point.rb +10 -0
- data/lib/win-ffi/structs/user32/msg.rb +16 -0
- data/lib/win-ffi/structs/user32/pointer_info.rb +25 -0
- data/lib/win-ffi/structs/user32/pointer_pen_info.rb +18 -0
- data/lib/win-ffi/structs/user32/pointer_touch_info.rb +17 -0
- data/lib/win-ffi/structs/user32/raw_input_device_list.rb +10 -0
- data/lib/win-ffi/structs/user32/raw_input_header.rb +10 -0
- data/lib/win-ffi/structs/user32/touch_hit_testing_input.rb +11 -0
- data/lib/win-ffi/structs/user32/touch_hit_testing_proximity_evaluation.rb +8 -0
- data/lib/win-ffi/structs/user32/track_mouse_event.rb +10 -0
- data/lib/win-ffi/structs/user32/window/alt_tab_info.rb +17 -0
- data/lib/win-ffi/structs/user32/window/bs_info.rb +12 -0
- data/lib/win-ffi/structs/user32/window/create_struct.rb +22 -0
- data/lib/win-ffi/structs/user32/window/dlg_template.rb +13 -0
- data/lib/win-ffi/structs/user32/window/flashw_info.rb +11 -0
- data/lib/win-ffi/structs/user32/window/gui_thread_info.rb +17 -0
- data/lib/win-ffi/structs/user32/window/luid.rb +8 -0
- data/lib/win-ffi/structs/user32/window/menu_info.rb +13 -0
- data/lib/win-ffi/structs/user32/window/menu_item_info.rb +18 -0
- data/lib/win-ffi/structs/user32/window/menu_item_template.rb +9 -0
- data/lib/win-ffi/structs/user32/window/menubar_info.rb +12 -0
- data/lib/win-ffi/structs/user32/window/msgbox_params.rb +16 -0
- data/lib/win-ffi/structs/user32/window/non_client_metrics.rb +29 -0
- data/lib/win-ffi/structs/user32/window/title_bar_info.rb +9 -0
- data/lib/win-ffi/structs/user32/window/tpm_params.rb +8 -0
- data/lib/win-ffi/structs/user32/window/update_layered_window_info.rb +22 -0
- data/lib/win-ffi/structs/user32/window/window_placement.rb +32 -0
- data/lib/win-ffi/structs/user32/window/window_pos.rb +46 -0
- data/lib/win-ffi/structs/user32/window/wndclass.rb +19 -0
- data/lib/win-ffi/structs/user32/window/wndclassex.rb +40 -0
- data/lib/win-ffi/version.rb +3 -0
- data/lib/win-ffi.rb +42 -0
- 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,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
|