windows-pr 1.1.3 → 1.2.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 (123) hide show
  1. data/CHANGES +15 -0
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +37 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +2 -0
  7. data/lib/windows/com.rb +2 -0
  8. data/lib/windows/com/accessibility.rb +12 -10
  9. data/lib/windows/com/automation.rb +149 -147
  10. data/lib/windows/com/variant.rb +24 -22
  11. data/lib/windows/console.rb +114 -112
  12. data/lib/windows/debug.rb +35 -33
  13. data/lib/windows/device_io.rb +248 -246
  14. data/lib/windows/directory.rb +2 -0
  15. data/lib/windows/error.rb +2 -0
  16. data/lib/windows/eventlog.rb +2 -0
  17. data/lib/windows/file.rb +264 -262
  18. data/lib/windows/file_mapping.rb +25 -23
  19. data/lib/windows/filesystem.rb +2 -0
  20. data/lib/windows/gdi/bitmap.rb +65 -63
  21. data/lib/windows/gdi/device_context.rb +46 -44
  22. data/lib/windows/gdi/metafile.rb +40 -38
  23. data/lib/windows/gdi/painting_drawing.rb +115 -113
  24. data/lib/windows/handle.rb +2 -0
  25. data/lib/windows/library.rb +2 -0
  26. data/lib/windows/limits.rb +34 -31
  27. data/lib/windows/mailslot.rb +2 -0
  28. data/lib/windows/memory.rb +2 -0
  29. data/lib/windows/msvcrt/buffer.rb +75 -73
  30. data/lib/windows/msvcrt/directory.rb +31 -29
  31. data/lib/windows/msvcrt/file.rb +47 -45
  32. data/lib/windows/msvcrt/io.rb +62 -60
  33. data/lib/windows/msvcrt/string.rb +2 -0
  34. data/lib/windows/msvcrt/time.rb +169 -167
  35. data/lib/windows/national.rb +580 -578
  36. data/lib/windows/network/management.rb +525 -523
  37. data/lib/windows/network/snmp.rb +92 -90
  38. data/lib/windows/network/winsock.rb +128 -126
  39. data/lib/windows/nio.rb +2 -0
  40. data/lib/windows/ntfs/winternl.rb +96 -82
  41. data/lib/windows/path.rb +143 -141
  42. data/lib/windows/pipe.rb +42 -40
  43. data/lib/windows/process.rb +2 -0
  44. data/lib/windows/registry.rb +171 -126
  45. data/lib/windows/security.rb +479 -477
  46. data/lib/windows/security/authentication.rb +32 -30
  47. data/lib/windows/service.rb +142 -140
  48. data/lib/windows/shell.rb +171 -169
  49. data/lib/windows/socket.rb +86 -0
  50. data/lib/windows/sound.rb +39 -37
  51. data/lib/windows/synchronize.rb +133 -131
  52. data/lib/windows/system_info.rb +4 -2
  53. data/lib/windows/thread.rb +2 -0
  54. data/lib/windows/time.rb +48 -46
  55. data/lib/windows/tool_helper.rb +36 -34
  56. data/lib/windows/unicode.rb +2 -0
  57. data/lib/windows/volume.rb +61 -59
  58. data/lib/windows/window.rb +81 -79
  59. data/lib/windows/window/classes.rb +59 -57
  60. data/lib/windows/window/dialog.rb +91 -89
  61. data/lib/windows/window/menu.rb +102 -100
  62. data/lib/windows/window/message.rb +297 -295
  63. data/lib/windows/window/properties.rb +20 -18
  64. data/lib/windows/window/timer.rb +19 -17
  65. data/lib/windows/wsa.rb +102 -0
  66. data/test/tc_clipboard.rb +41 -41
  67. data/test/tc_com.rb +32 -32
  68. data/test/tc_com_automation.rb +15 -15
  69. data/test/tc_console.rb +108 -108
  70. data/test/tc_debug.rb +48 -48
  71. data/test/tc_device_io.rb +29 -29
  72. data/test/tc_directory.rb +25 -25
  73. data/test/tc_error.rb +38 -50
  74. data/test/tc_eventlog.rb +58 -58
  75. data/test/tc_file.rb +67 -67
  76. data/test/tc_file_mapping.rb +38 -38
  77. data/test/tc_filesystem.rb +27 -27
  78. data/test/tc_gdi_bitmap.rb +25 -25
  79. data/test/tc_gdi_metafile.rb +23 -23
  80. data/test/tc_handle.rb +36 -36
  81. data/test/tc_library.rb +37 -37
  82. data/test/tc_limits.rb +34 -34
  83. data/test/tc_mailslot.rb +22 -22
  84. data/test/tc_memory.rb +44 -44
  85. data/test/tc_msvcrt_buffer.rb +59 -68
  86. data/test/tc_msvcrt_directory.rb +96 -98
  87. data/test/tc_msvcrt_file.rb +80 -80
  88. data/test/tc_msvcrt_io.rb +48 -48
  89. data/test/tc_msvcrt_string.rb +94 -93
  90. data/test/tc_msvcrt_time.rb +19 -29
  91. data/test/tc_national.rb +38 -38
  92. data/test/tc_network_management.rb +32 -32
  93. data/test/tc_network_snmp.rb +31 -31
  94. data/test/tc_network_winsock.rb +34 -34
  95. data/test/tc_nio.rb +32 -32
  96. data/test/tc_ntfs_winternl.rb +33 -18
  97. data/test/tc_path.rb +90 -90
  98. data/test/tc_pipe.rb +53 -53
  99. data/test/tc_process.rb +24 -24
  100. data/test/tc_registry.rb +29 -29
  101. data/test/tc_security.rb +104 -104
  102. data/test/tc_security_authentication.rb +34 -34
  103. data/test/tc_service.rb +57 -57
  104. data/test/tc_shell.rb +34 -34
  105. data/test/tc_socket.rb +20 -0
  106. data/test/tc_sound.rb +37 -37
  107. data/test/tc_synchronize.rb +75 -75
  108. data/test/tc_system_info.rb +33 -43
  109. data/test/tc_thread.rb +29 -29
  110. data/test/tc_time.rb +32 -32
  111. data/test/tc_tool_helper.rb +29 -29
  112. data/test/tc_unicode.rb +62 -62
  113. data/test/tc_volume.rb +47 -47
  114. data/test/tc_window.rb +45 -45
  115. data/test/tc_window_classes.rb +33 -33
  116. data/test/tc_window_dialog.rb +33 -33
  117. data/test/tc_window_menu.rb +29 -29
  118. data/test/tc_window_message.rb +33 -33
  119. data/test/tc_window_properties.rb +29 -29
  120. data/test/tc_window_timer.rb +29 -29
  121. data/test/tc_wsa.rb +19 -0
  122. data/windows-pr.gemspec +1 -1
  123. metadata +13 -7
@@ -1,112 +1,114 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Console
5
- API.auto_namespace = 'Windows::Console'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- CTRL_C_EVENT = 0
11
- CTRL_BREAK_EVENT = 1
12
- CTRL_CLOSE_EVENT = 2
13
- CTRL_LOGOFF_EVENT = 5
14
- CTRL_SHUTDOWN_EVENT = 6
15
-
16
- ENABLE_PROCESSED_INPUT = 0x0001
17
- ENABLE_LINE_INPUT = 0x0002
18
- ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002
19
- ENABLE_ECHO_INPUT = 0x0004
20
- ENABLE_WINDOW_INPUT = 0x0008
21
- ENABLE_MOUSE_INPUT = 0x0010
22
- ENABLE_INSERT_MODE = 0x0020
23
- ENABLE_QUICK_EDIT_MODE = 0x0040
24
-
25
- STD_INPUT_HANDLE = -10
26
- STD_OUTPUT_HANDLE = -11
27
- STD_ERROR_HANDLE = -12
28
-
29
- # Console window constants
30
- FOREGROUND_BLUE = 0x0001
31
- FOREGROUND_GREEN = 0x0002
32
- FOREGROUND_RED = 0x0004
33
- FOREGROUND_INTENSITY = 0x0008
34
- BACKGROUND_BLUE = 0x0010
35
- BACKGROUND_GREEN = 0x0020
36
- BACKGROUND_RED = 0x0040
37
- BACKGROUND_INTENSITY = 0x0080
38
- COMMON_LVB_LEADING_BYTE = 0x0100
39
- COMMON_LVB_TRAILING_BYTE = 0x0200
40
- COMMON_LVB_GRID_HORIZONTAL = 0x0400
41
- COMMON_LVB_GRID_LVERTICAL = 0x0800
42
- COMMON_LVB_GRID_RVERTICAL = 0x1000
43
- COMMON_LVB_REVERSE_VIDEO = 0x4000
44
- COMMON_LVB_UNDERSCORE = 0x8000
45
- COMMON_LVB_SBCSDBCS = 0x0300
46
-
47
- CONSOLE_FULLSCREEN = 1
48
- CONSOLE_OVERSTRIKE = 1
49
- CONSOLE_FULLSCREEN_HARDWARE = 2
50
-
51
- API.new('AddConsoleAlias', 'PPP', 'B')
52
- API.new('AllocConsole', 'V', 'B')
53
- API.new('CreateConsoleScreenBuffer', 'LLPLP', 'L')
54
- API.new('FillConsoleOutputAttribute', 'LILLP', 'B')
55
- API.new('FillConsoleOutputCharacter', 'LILLP', 'B')
56
- API.new('FlushConsoleInputBuffer', 'L', 'B')
57
- API.new('FreeConsole', 'V', 'B')
58
- API.new('GenerateConsoleCtrlEvent', 'LL', 'B')
59
- API.new('GetConsoleAlias', 'PPLP', 'L')
60
- API.new('GetConsoleAliases', 'PLP', 'L')
61
- API.new('GetConsoleAliasesLength', 'P', 'L')
62
- API.new('GetConsoleAliasExes', 'PL', 'L')
63
- API.new('GetConsoleAliasExesLength', 'V', 'L')
64
- API.new('GetConsoleCP', 'V', 'I')
65
- API.new('GetConsoleCursorInfo', 'LP', 'B')
66
- API.new('GetConsoleMode', 'LP', 'B')
67
- API.new('GetConsoleOutputCP', 'V', 'I')
68
- API.new('GetConsoleScreenBufferInfo', 'LP', 'B')
69
- API.new('GetConsoleTitle', 'PL', 'L')
70
- API.new('GetConsoleWindow', 'V', 'L')
71
- API.new('GetLargestConsoleWindowSize', 'L', 'L')
72
- API.new('GetNumberOfConsoleInputEvents', 'LP', 'B')
73
- API.new('GetNumberOfConsoleMouseButtons', 'L', 'B')
74
- API.new('GetStdHandle', 'L', 'L')
75
- API.new('PeekConsoleInput', 'LPLP', 'B')
76
- API.new('ReadConsole', 'LPLPP', 'B')
77
- API.new('ReadConsoleInput', 'LPLP', 'B')
78
- API.new('ReadConsoleOutput', 'LPLLP', 'B')
79
- API.new('ReadConsoleOutputAttribute', 'LPLLP', 'B')
80
- API.new('ReadConsoleOutputCharacter', 'LPLLP', 'B')
81
- API.new('ScrollConsoleScreenBuffer', 'LPPLP', 'B')
82
- API.new('SetConsoleActiveScreenBuffer', 'L', 'B')
83
- API.new('SetConsoleCP', 'L', 'B')
84
- API.new('SetConsoleCtrlHandler', 'KI', 'B')
85
- API.new('SetConsoleCursorInfo', 'LP', 'B')
86
- API.new('SetConsoleCursorPosition', 'LP', 'B')
87
- API.new('SetConsoleMode', 'LL', 'B')
88
- API.new('SetConsoleOutputCP', 'I', 'B')
89
- API.new('SetConsoleScreenBufferSize', 'LL', 'B')
90
- API.new('SetConsoleTextAttribute', 'LL', 'B')
91
- API.new('SetConsoleTitle', 'P', 'B')
92
- API.new('SetConsoleWindowInfo', 'LIP', 'B')
93
- API.new('SetStdHandle', 'LL', 'B')
94
- API.new('WriteConsole', 'LPLPP', 'B')
95
- API.new('WriteConsoleInput', 'LPLP', 'B')
96
- API.new('WriteConsoleOutput', 'LPLLP', 'B')
97
- API.new('WriteConsoleOutputAttribute', 'LPLLP', 'B')
98
- API.new('WriteConsoleOutputCharacter', 'LPLLP', 'B')
99
-
100
- begin
101
- API.new('AttachConsole', 'L', 'B')
102
- API.new('GetConsoleDisplayMode', 'P', 'L')
103
- API.new('GetConsoleFontSize', 'LL', 'L')
104
- API.new('GetConsoleProcessList', 'PL', 'L')
105
- API.new('GetConsoleSelectionInfo', 'P', 'B')
106
- API.new('GetCurrentConsoleFont' , 'LIP', 'B')
107
- API.new('SetConsoleDisplayMode', 'LLP', 'B')
108
- rescue Win32::API::LoadLibraryError
109
- # Windows XP or later
110
- end
111
- end
112
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Console
5
+ API.auto_namespace = 'Windows::Console'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ CTRL_C_EVENT = 0
13
+ CTRL_BREAK_EVENT = 1
14
+ CTRL_CLOSE_EVENT = 2
15
+ CTRL_LOGOFF_EVENT = 5
16
+ CTRL_SHUTDOWN_EVENT = 6
17
+
18
+ ENABLE_PROCESSED_INPUT = 0x0001
19
+ ENABLE_LINE_INPUT = 0x0002
20
+ ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002
21
+ ENABLE_ECHO_INPUT = 0x0004
22
+ ENABLE_WINDOW_INPUT = 0x0008
23
+ ENABLE_MOUSE_INPUT = 0x0010
24
+ ENABLE_INSERT_MODE = 0x0020
25
+ ENABLE_QUICK_EDIT_MODE = 0x0040
26
+
27
+ STD_INPUT_HANDLE = -10
28
+ STD_OUTPUT_HANDLE = -11
29
+ STD_ERROR_HANDLE = -12
30
+
31
+ # Console window constants
32
+ FOREGROUND_BLUE = 0x0001
33
+ FOREGROUND_GREEN = 0x0002
34
+ FOREGROUND_RED = 0x0004
35
+ FOREGROUND_INTENSITY = 0x0008
36
+ BACKGROUND_BLUE = 0x0010
37
+ BACKGROUND_GREEN = 0x0020
38
+ BACKGROUND_RED = 0x0040
39
+ BACKGROUND_INTENSITY = 0x0080
40
+ COMMON_LVB_LEADING_BYTE = 0x0100
41
+ COMMON_LVB_TRAILING_BYTE = 0x0200
42
+ COMMON_LVB_GRID_HORIZONTAL = 0x0400
43
+ COMMON_LVB_GRID_LVERTICAL = 0x0800
44
+ COMMON_LVB_GRID_RVERTICAL = 0x1000
45
+ COMMON_LVB_REVERSE_VIDEO = 0x4000
46
+ COMMON_LVB_UNDERSCORE = 0x8000
47
+ COMMON_LVB_SBCSDBCS = 0x0300
48
+
49
+ CONSOLE_FULLSCREEN = 1
50
+ CONSOLE_OVERSTRIKE = 1
51
+ CONSOLE_FULLSCREEN_HARDWARE = 2
52
+
53
+ API.new('AddConsoleAlias', 'PPP', 'B')
54
+ API.new('AllocConsole', 'V', 'B')
55
+ API.new('CreateConsoleScreenBuffer', 'LLPLP', 'L')
56
+ API.new('FillConsoleOutputAttribute', 'LILLP', 'B')
57
+ API.new('FillConsoleOutputCharacter', 'LILLP', 'B')
58
+ API.new('FlushConsoleInputBuffer', 'L', 'B')
59
+ API.new('FreeConsole', 'V', 'B')
60
+ API.new('GenerateConsoleCtrlEvent', 'LL', 'B')
61
+ API.new('GetConsoleAlias', 'PPLP', 'L')
62
+ API.new('GetConsoleAliases', 'PLP', 'L')
63
+ API.new('GetConsoleAliasesLength', 'P', 'L')
64
+ API.new('GetConsoleAliasExes', 'PL', 'L')
65
+ API.new('GetConsoleAliasExesLength', 'V', 'L')
66
+ API.new('GetConsoleCP', 'V', 'I')
67
+ API.new('GetConsoleCursorInfo', 'LP', 'B')
68
+ API.new('GetConsoleMode', 'LP', 'B')
69
+ API.new('GetConsoleOutputCP', 'V', 'I')
70
+ API.new('GetConsoleScreenBufferInfo', 'LP', 'B')
71
+ API.new('GetConsoleTitle', 'PL', 'L')
72
+ API.new('GetConsoleWindow', 'V', 'L')
73
+ API.new('GetLargestConsoleWindowSize', 'L', 'L')
74
+ API.new('GetNumberOfConsoleInputEvents', 'LP', 'B')
75
+ API.new('GetNumberOfConsoleMouseButtons', 'L', 'B')
76
+ API.new('GetStdHandle', 'L', 'L')
77
+ API.new('PeekConsoleInput', 'LPLP', 'B')
78
+ API.new('ReadConsole', 'LPLPP', 'B')
79
+ API.new('ReadConsoleInput', 'LPLP', 'B')
80
+ API.new('ReadConsoleOutput', 'LPLLP', 'B')
81
+ API.new('ReadConsoleOutputAttribute', 'LPLLP', 'B')
82
+ API.new('ReadConsoleOutputCharacter', 'LPLLP', 'B')
83
+ API.new('ScrollConsoleScreenBuffer', 'LPPLP', 'B')
84
+ API.new('SetConsoleActiveScreenBuffer', 'L', 'B')
85
+ API.new('SetConsoleCP', 'L', 'B')
86
+ API.new('SetConsoleCtrlHandler', 'KI', 'B')
87
+ API.new('SetConsoleCursorInfo', 'LP', 'B')
88
+ API.new('SetConsoleCursorPosition', 'LP', 'B')
89
+ API.new('SetConsoleMode', 'LL', 'B')
90
+ API.new('SetConsoleOutputCP', 'I', 'B')
91
+ API.new('SetConsoleScreenBufferSize', 'LL', 'B')
92
+ API.new('SetConsoleTextAttribute', 'LL', 'B')
93
+ API.new('SetConsoleTitle', 'P', 'B')
94
+ API.new('SetConsoleWindowInfo', 'LIP', 'B')
95
+ API.new('SetStdHandle', 'LL', 'B')
96
+ API.new('WriteConsole', 'LPLPP', 'B')
97
+ API.new('WriteConsoleInput', 'LPLP', 'B')
98
+ API.new('WriteConsoleOutput', 'LPLLP', 'B')
99
+ API.new('WriteConsoleOutputAttribute', 'LPLLP', 'B')
100
+ API.new('WriteConsoleOutputCharacter', 'LPLLP', 'B')
101
+
102
+ begin
103
+ API.new('AttachConsole', 'L', 'B')
104
+ API.new('GetConsoleDisplayMode', 'P', 'L')
105
+ API.new('GetConsoleFontSize', 'LL', 'L')
106
+ API.new('GetConsoleProcessList', 'PL', 'L')
107
+ API.new('GetConsoleSelectionInfo', 'P', 'B')
108
+ API.new('GetCurrentConsoleFont' , 'LIP', 'B')
109
+ API.new('SetConsoleDisplayMode', 'LLP', 'B')
110
+ rescue Win32::API::LoadLibraryError
111
+ # Windows XP or later
112
+ end
113
+ end
114
+ end
data/lib/windows/debug.rb CHANGED
@@ -1,33 +1,35 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Debug
5
- API.auto_namespace = 'Windows::Debug'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = false
9
-
10
- API.new('ContinueDebugEvent', 'LLL', 'B')
11
- API.new('DebugActiveProcess', 'L', 'B')
12
- API.new('DebugBreak', 'V', 'V')
13
- API.new('FatalExit', 'I', 'V')
14
- API.new('FlushInstructionCache', 'LLL', 'B')
15
- API.new('GetThreadContext', 'LP', 'B')
16
- API.new('GetThreadSelectorEntry', 'LLP', 'B')
17
- API.new('IsDebuggerPresent', 'V', 'B')
18
- API.new('OutputDebugString', 'P', 'V')
19
- API.new('ReadProcessMemory', 'LLPLP', 'B')
20
- API.new('SetThreadContext', 'LP', 'B')
21
- API.new('WaitForDebugEvent', 'PL', 'B')
22
- API.new('WriteProcessMemory', 'LLPLP', 'B')
23
-
24
- begin
25
- API.new('CheckRemoteDebuggerPresent', 'LP', 'B')
26
- API.new('DebugActiveProcessStop', 'L', 'B')
27
- API.new('DebugBreakProcess', 'L', 'B')
28
- API.new('DebugSetProcessKillOnExit', 'I', 'B')
29
- rescue Win32::API::LoadLibraryError
30
- # Windows XP or later
31
- end
32
- end
33
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Debug
5
+ API.auto_namespace = 'Windows::Debug'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = false
9
+
10
+ private
11
+
12
+ API.new('ContinueDebugEvent', 'LLL', 'B')
13
+ API.new('DebugActiveProcess', 'L', 'B')
14
+ API.new('DebugBreak', 'V', 'V')
15
+ API.new('FatalExit', 'I', 'V')
16
+ API.new('FlushInstructionCache', 'LLL', 'B')
17
+ API.new('GetThreadContext', 'LP', 'B')
18
+ API.new('GetThreadSelectorEntry', 'LLP', 'B')
19
+ API.new('IsDebuggerPresent', 'V', 'B')
20
+ API.new('OutputDebugString', 'P', 'V')
21
+ API.new('ReadProcessMemory', 'LLPLP', 'B')
22
+ API.new('SetThreadContext', 'LP', 'B')
23
+ API.new('WaitForDebugEvent', 'PL', 'B')
24
+ API.new('WriteProcessMemory', 'LLPLP', 'B')
25
+
26
+ begin
27
+ API.new('CheckRemoteDebuggerPresent', 'LP', 'B')
28
+ API.new('DebugActiveProcessStop', 'L', 'B')
29
+ API.new('DebugBreakProcess', 'L', 'B')
30
+ API.new('DebugSetProcessKillOnExit', 'I', 'B')
31
+ rescue Win32::API::LoadLibraryError
32
+ # Windows XP or later
33
+ end
34
+ end
35
+ end
@@ -1,246 +1,248 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module DeviceIO
5
- API.auto_namespace = 'Windows::DeviceIO'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = false
9
-
10
- # Device Types
11
- FILE_DEVICE_BEEP = 0x00000001
12
- FILE_DEVICE_CD_ROM = 0x00000002
13
- FILE_DEVICE_CD_ROM_FILE_SYSTEM = 0x00000003
14
- FILE_DEVICE_CONTROLLER = 0x00000004
15
- FILE_DEVICE_DATALINK = 0x00000005
16
- FILE_DEVICE_DFS = 0x00000006
17
- FILE_DEVICE_DISK = 0x00000007
18
- FILE_DEVICE_DISK_FILE_SYSTEM = 0x00000008
19
- FILE_DEVICE_FILE_SYSTEM = 0x00000009
20
- FILE_DEVICE_INPORT_PORT = 0x0000000a
21
- FILE_DEVICE_KEYBOARD = 0x0000000b
22
- FILE_DEVICE_MAILSLOT = 0x0000000c
23
- FILE_DEVICE_MIDI_IN = 0x0000000d
24
- FILE_DEVICE_MIDI_OUT = 0x0000000e
25
- FILE_DEVICE_MOUSE = 0x0000000f
26
- FILE_DEVICE_MULTI_UNC_PROVIDER = 0x00000010
27
- FILE_DEVICE_NAMED_PIPE = 0x00000011
28
- FILE_DEVICE_NETWORK = 0x00000012
29
- FILE_DEVICE_NETWORK_BROWSER = 0x00000013
30
- FILE_DEVICE_NETWORK_FILE_SYSTEM = 0x00000014
31
- FILE_DEVICE_NULL = 0x00000015
32
- FILE_DEVICE_PARALLEL_PORT = 0x00000016
33
- FILE_DEVICE_PHYSICAL_NETCARD = 0x00000017
34
- FILE_DEVICE_PRINTER = 0x00000018
35
- FILE_DEVICE_SCANNER = 0x00000019
36
- FILE_DEVICE_SERIAL_MOUSE_PORT = 0x0000001a
37
- FILE_DEVICE_SERIAL_PORT = 0x0000001b
38
- FILE_DEVICE_SCREEN = 0x0000001c
39
- FILE_DEVICE_SOUND = 0x0000001d
40
- FILE_DEVICE_STREAMS = 0x0000001e
41
- FILE_DEVICE_TAPE = 0x0000001f
42
- FILE_DEVICE_TAPE_FILE_SYSTEM = 0x00000020
43
- FILE_DEVICE_TRANSPORT = 0x00000021
44
- FILE_DEVICE_UNKNOWN = 0x00000022
45
- FILE_DEVICE_VIDEO = 0x00000023
46
- FILE_DEVICE_VIRTUAL_DISK = 0x00000024
47
- FILE_DEVICE_WAVE_IN = 0x00000025
48
- FILE_DEVICE_WAVE_OUT = 0x00000026
49
- FILE_DEVICE_8042_PORT = 0x00000027
50
- FILE_DEVICE_NETWORK_REDIRECTOR = 0x00000028
51
- FILE_DEVICE_BATTERY = 0x00000029
52
- FILE_DEVICE_BUS_EXTENDER = 0x0000002a
53
- FILE_DEVICE_MODEM = 0x0000002b
54
- FILE_DEVICE_VDM = 0x0000002c
55
- FILE_DEVICE_MASS_STORAGE = 0x0000002d
56
- FILE_DEVICE_SMB = 0x0000002e
57
- FILE_DEVICE_KS = 0x0000002f
58
- FILE_DEVICE_CHANGER = 0x00000030
59
- FILE_DEVICE_SMARTCARD = 0x00000031
60
- FILE_DEVICE_ACPI = 0x00000032
61
- FILE_DEVICE_DVD = 0x00000033
62
- FILE_DEVICE_FULLSCREEN_VIDEO = 0x00000034
63
- FILE_DEVICE_DFS_FILE_SYSTEM = 0x00000035
64
- FILE_DEVICE_DFS_VOLUME = 0x00000036
65
- FILE_DEVICE_SERENUM = 0x00000037
66
- FILE_DEVICE_TERMSRV = 0x00000038
67
- FILE_DEVICE_KSEC = 0x00000039
68
- FILE_DEVICE_FIPS = 0x0000003A
69
- FILE_DEVICE_INFINIBAND = 0x0000003B
70
-
71
- IOCTL_DISK_BASE = FILE_DEVICE_DISK
72
-
73
- FILE_ANY_ACCESS = 0
74
- FILE_READ_ACCESS = 0x0001
75
- FILE_WRITE_ACCESS = 0x0002
76
- FILE_SPECIAL_ACCESS = FILE_ANY_ACCESS
77
-
78
- METHOD_BUFFERED = 0
79
- METHOD_IN_DIRECT = 1
80
- METHOD_OUT_DIRECT = 2
81
- METHOD_NEITHER = 3
82
-
83
- API.new('DeviceIoControl', 'LLPLPLPP', 'B')
84
-
85
- # Macros from WinIoCtl.h
86
-
87
- def CTL_CODE(device, function, method, access)
88
- ((device) << 16) | ((access) << 14) | ((function) << 2) | (method)
89
- end
90
-
91
- def FSCTL_SET_COMPRESSION
92
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, 3)
93
- end
94
-
95
- def FSCTL_ENUM_USN_DATA
96
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, 0)
97
- end
98
-
99
- def FSCTL_READ_USN_JOURNAL
100
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, 0)
101
- end
102
-
103
- def FSCTL_SET_SPARSE
104
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, 0)
105
- end
106
-
107
- def FSCTL_CREATE_USN_JOURNAL
108
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, 0)
109
- end
110
-
111
- def FSCTL_READ_FILE_USN_DATA
112
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, 0)
113
- end
114
-
115
- def FSCTL_WRITE_USN_CLOSE_RECORD
116
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, 0)
117
- end
118
-
119
- def FSCTL_EXTEND_VOLUME
120
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, 0)
121
- end
122
-
123
- def FSCTL_QUERY_USN_JOURNAL
124
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, 0)
125
- end
126
-
127
- def FSCTL_DELETE_USN_JOURNAL
128
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, 0)
129
- end
130
-
131
- def IOCTL_DISK_GET_DRIVE_GEOMETRY
132
- CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
133
- end
134
-
135
- def IOCTL_DISK_GET_PARTITION_INFO
136
- CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
137
- end
138
-
139
- def IOCTL_DISK_SET_PARTITION_INFO
140
- CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED,
141
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
142
- )
143
- end
144
-
145
- def IOCTL_DISK_GET_DRIVE_LAYOUT
146
- CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
147
- end
148
-
149
- def IOCTL_DISK_SET_DRIVE_LAYOUT
150
- CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED,
151
- FILE_READ_ACCESS | FILE_WRITE_ACCESS)
152
- end
153
-
154
- def IOCTL_DISK_VERIFY
155
- CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
156
- end
157
-
158
- def IOCTL_DISK_FORMAT_TRACKS
159
- CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED,
160
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
161
- )
162
- end
163
-
164
- def IOCTL_DISK_REASSIGN_BLOCKS
165
- CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED,
166
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
167
- )
168
- end
169
-
170
- def IOCTL_DISK_PERFORMANCE
171
- CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
172
- end
173
-
174
- def IOCTL_DISK_IS_WRITABLE
175
- CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
176
- end
177
-
178
- def IOCTL_DISK_LOGGING
179
- CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
180
- end
181
-
182
- def IOCTL_DISK_FORMAT_TRACKS_EX
183
- CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED,
184
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
185
- )
186
- end
187
-
188
- def IOCTL_DISK_HISTOGRAM_STRUCTURE
189
- CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
190
- end
191
-
192
- def IOCTL_DISK_HISTOGRAM_DATA
193
- CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
194
- end
195
-
196
- def IOCTL_DISK_HISTOGRAM_RESET
197
- CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
198
- end
199
-
200
- def IOCTL_DISK_REQUEST_STRUCTURE
201
- CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
202
- end
203
-
204
- def IOCTL_DISK_REQUEST_DATA
205
- CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
206
- end
207
-
208
- def IOCTL_DISK_PERFORMANCE_OFF
209
- CTL_CODE(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED, FILE_ANY_ACCESS)
210
- end
211
-
212
- def IOCTL_DISK_GET_PARTITION_INFO_EX
213
- CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
214
- end
215
-
216
- def IOCTL_DISK_SET_PARTITION_INFO_EX
217
- CTL_CODE(IOCTL_DISK_BASE, 0x0013, METHOD_BUFFERED,
218
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
219
- )
220
- end
221
-
222
- def IOCTL_DISK_GET_DRIVE_LAYOUT_EX
223
- CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS)
224
- end
225
-
226
- def IOCTL_DISK_SET_DRIVE_LAYOUT_EX
227
- CTL_CODE(IOCTL_DISK_BASE, 0x0015, METHOD_BUFFERED,
228
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
229
- )
230
- end
231
-
232
- def IOCTL_DISK_CREATE_DISK
233
- CTL_CODE(IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED,
234
- FILE_READ_ACCESS | FILE_WRITE_ACCESS
235
- )
236
- end
237
-
238
- def IOCTL_DISK_GET_LENGTH_INFO
239
- CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)
240
- end
241
-
242
- def IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
243
- CTL_CODE(IOCTL_DISK_BASE, 0x0028, METHOD_BUFFERED, FILE_ANY_ACCESS)
244
- end
245
- end
246
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module DeviceIO
5
+ API.auto_namespace = 'Windows::DeviceIO'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = false
9
+
10
+ private
11
+
12
+ # Device Types
13
+ FILE_DEVICE_BEEP = 0x00000001
14
+ FILE_DEVICE_CD_ROM = 0x00000002
15
+ FILE_DEVICE_CD_ROM_FILE_SYSTEM = 0x00000003
16
+ FILE_DEVICE_CONTROLLER = 0x00000004
17
+ FILE_DEVICE_DATALINK = 0x00000005
18
+ FILE_DEVICE_DFS = 0x00000006
19
+ FILE_DEVICE_DISK = 0x00000007
20
+ FILE_DEVICE_DISK_FILE_SYSTEM = 0x00000008
21
+ FILE_DEVICE_FILE_SYSTEM = 0x00000009
22
+ FILE_DEVICE_INPORT_PORT = 0x0000000a
23
+ FILE_DEVICE_KEYBOARD = 0x0000000b
24
+ FILE_DEVICE_MAILSLOT = 0x0000000c
25
+ FILE_DEVICE_MIDI_IN = 0x0000000d
26
+ FILE_DEVICE_MIDI_OUT = 0x0000000e
27
+ FILE_DEVICE_MOUSE = 0x0000000f
28
+ FILE_DEVICE_MULTI_UNC_PROVIDER = 0x00000010
29
+ FILE_DEVICE_NAMED_PIPE = 0x00000011
30
+ FILE_DEVICE_NETWORK = 0x00000012
31
+ FILE_DEVICE_NETWORK_BROWSER = 0x00000013
32
+ FILE_DEVICE_NETWORK_FILE_SYSTEM = 0x00000014
33
+ FILE_DEVICE_NULL = 0x00000015
34
+ FILE_DEVICE_PARALLEL_PORT = 0x00000016
35
+ FILE_DEVICE_PHYSICAL_NETCARD = 0x00000017
36
+ FILE_DEVICE_PRINTER = 0x00000018
37
+ FILE_DEVICE_SCANNER = 0x00000019
38
+ FILE_DEVICE_SERIAL_MOUSE_PORT = 0x0000001a
39
+ FILE_DEVICE_SERIAL_PORT = 0x0000001b
40
+ FILE_DEVICE_SCREEN = 0x0000001c
41
+ FILE_DEVICE_SOUND = 0x0000001d
42
+ FILE_DEVICE_STREAMS = 0x0000001e
43
+ FILE_DEVICE_TAPE = 0x0000001f
44
+ FILE_DEVICE_TAPE_FILE_SYSTEM = 0x00000020
45
+ FILE_DEVICE_TRANSPORT = 0x00000021
46
+ FILE_DEVICE_UNKNOWN = 0x00000022
47
+ FILE_DEVICE_VIDEO = 0x00000023
48
+ FILE_DEVICE_VIRTUAL_DISK = 0x00000024
49
+ FILE_DEVICE_WAVE_IN = 0x00000025
50
+ FILE_DEVICE_WAVE_OUT = 0x00000026
51
+ FILE_DEVICE_8042_PORT = 0x00000027
52
+ FILE_DEVICE_NETWORK_REDIRECTOR = 0x00000028
53
+ FILE_DEVICE_BATTERY = 0x00000029
54
+ FILE_DEVICE_BUS_EXTENDER = 0x0000002a
55
+ FILE_DEVICE_MODEM = 0x0000002b
56
+ FILE_DEVICE_VDM = 0x0000002c
57
+ FILE_DEVICE_MASS_STORAGE = 0x0000002d
58
+ FILE_DEVICE_SMB = 0x0000002e
59
+ FILE_DEVICE_KS = 0x0000002f
60
+ FILE_DEVICE_CHANGER = 0x00000030
61
+ FILE_DEVICE_SMARTCARD = 0x00000031
62
+ FILE_DEVICE_ACPI = 0x00000032
63
+ FILE_DEVICE_DVD = 0x00000033
64
+ FILE_DEVICE_FULLSCREEN_VIDEO = 0x00000034
65
+ FILE_DEVICE_DFS_FILE_SYSTEM = 0x00000035
66
+ FILE_DEVICE_DFS_VOLUME = 0x00000036
67
+ FILE_DEVICE_SERENUM = 0x00000037
68
+ FILE_DEVICE_TERMSRV = 0x00000038
69
+ FILE_DEVICE_KSEC = 0x00000039
70
+ FILE_DEVICE_FIPS = 0x0000003A
71
+ FILE_DEVICE_INFINIBAND = 0x0000003B
72
+
73
+ IOCTL_DISK_BASE = FILE_DEVICE_DISK
74
+
75
+ FILE_ANY_ACCESS = 0
76
+ FILE_READ_ACCESS = 0x0001
77
+ FILE_WRITE_ACCESS = 0x0002
78
+ FILE_SPECIAL_ACCESS = FILE_ANY_ACCESS
79
+
80
+ METHOD_BUFFERED = 0
81
+ METHOD_IN_DIRECT = 1
82
+ METHOD_OUT_DIRECT = 2
83
+ METHOD_NEITHER = 3
84
+
85
+ API.new('DeviceIoControl', 'LLPLPLPP', 'B')
86
+
87
+ # Macros from WinIoCtl.h
88
+
89
+ def CTL_CODE(device, function, method, access)
90
+ ((device) << 16) | ((access) << 14) | ((function) << 2) | (method)
91
+ end
92
+
93
+ def FSCTL_SET_COMPRESSION
94
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, 3)
95
+ end
96
+
97
+ def FSCTL_ENUM_USN_DATA
98
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, 0)
99
+ end
100
+
101
+ def FSCTL_READ_USN_JOURNAL
102
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, 0)
103
+ end
104
+
105
+ def FSCTL_SET_SPARSE
106
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, 0)
107
+ end
108
+
109
+ def FSCTL_CREATE_USN_JOURNAL
110
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, 0)
111
+ end
112
+
113
+ def FSCTL_READ_FILE_USN_DATA
114
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, 0)
115
+ end
116
+
117
+ def FSCTL_WRITE_USN_CLOSE_RECORD
118
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, 0)
119
+ end
120
+
121
+ def FSCTL_EXTEND_VOLUME
122
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, 0)
123
+ end
124
+
125
+ def FSCTL_QUERY_USN_JOURNAL
126
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, 0)
127
+ end
128
+
129
+ def FSCTL_DELETE_USN_JOURNAL
130
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, 0)
131
+ end
132
+
133
+ def IOCTL_DISK_GET_DRIVE_GEOMETRY
134
+ CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
135
+ end
136
+
137
+ def IOCTL_DISK_GET_PARTITION_INFO
138
+ CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
139
+ end
140
+
141
+ def IOCTL_DISK_SET_PARTITION_INFO
142
+ CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED,
143
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
144
+ )
145
+ end
146
+
147
+ def IOCTL_DISK_GET_DRIVE_LAYOUT
148
+ CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
149
+ end
150
+
151
+ def IOCTL_DISK_SET_DRIVE_LAYOUT
152
+ CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED,
153
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS)
154
+ end
155
+
156
+ def IOCTL_DISK_VERIFY
157
+ CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
158
+ end
159
+
160
+ def IOCTL_DISK_FORMAT_TRACKS
161
+ CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED,
162
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
163
+ )
164
+ end
165
+
166
+ def IOCTL_DISK_REASSIGN_BLOCKS
167
+ CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED,
168
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
169
+ )
170
+ end
171
+
172
+ def IOCTL_DISK_PERFORMANCE
173
+ CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
174
+ end
175
+
176
+ def IOCTL_DISK_IS_WRITABLE
177
+ CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
178
+ end
179
+
180
+ def IOCTL_DISK_LOGGING
181
+ CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
182
+ end
183
+
184
+ def IOCTL_DISK_FORMAT_TRACKS_EX
185
+ CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED,
186
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
187
+ )
188
+ end
189
+
190
+ def IOCTL_DISK_HISTOGRAM_STRUCTURE
191
+ CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
192
+ end
193
+
194
+ def IOCTL_DISK_HISTOGRAM_DATA
195
+ CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
196
+ end
197
+
198
+ def IOCTL_DISK_HISTOGRAM_RESET
199
+ CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
200
+ end
201
+
202
+ def IOCTL_DISK_REQUEST_STRUCTURE
203
+ CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
204
+ end
205
+
206
+ def IOCTL_DISK_REQUEST_DATA
207
+ CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
208
+ end
209
+
210
+ def IOCTL_DISK_PERFORMANCE_OFF
211
+ CTL_CODE(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED, FILE_ANY_ACCESS)
212
+ end
213
+
214
+ def IOCTL_DISK_GET_PARTITION_INFO_EX
215
+ CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
216
+ end
217
+
218
+ def IOCTL_DISK_SET_PARTITION_INFO_EX
219
+ CTL_CODE(IOCTL_DISK_BASE, 0x0013, METHOD_BUFFERED,
220
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
221
+ )
222
+ end
223
+
224
+ def IOCTL_DISK_GET_DRIVE_LAYOUT_EX
225
+ CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS)
226
+ end
227
+
228
+ def IOCTL_DISK_SET_DRIVE_LAYOUT_EX
229
+ CTL_CODE(IOCTL_DISK_BASE, 0x0015, METHOD_BUFFERED,
230
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
231
+ )
232
+ end
233
+
234
+ def IOCTL_DISK_CREATE_DISK
235
+ CTL_CODE(IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED,
236
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS
237
+ )
238
+ end
239
+
240
+ def IOCTL_DISK_GET_LENGTH_INFO
241
+ CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)
242
+ end
243
+
244
+ def IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
245
+ CTL_CODE(IOCTL_DISK_BASE, 0x0028, METHOD_BUFFERED, FILE_ANY_ACCESS)
246
+ end
247
+ end
248
+ end