windows-pr 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/CHANGES +408 -404
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +52 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +59 -59
  7. data/lib/windows/com.rb +190 -189
  8. data/lib/windows/com/automation.rb +147 -147
  9. data/lib/windows/com/variant.rb +22 -22
  10. data/lib/windows/console.rb +112 -112
  11. data/lib/windows/debug.rb +33 -33
  12. data/lib/windows/device_io.rb +246 -246
  13. data/lib/windows/directory.rb +25 -25
  14. data/lib/windows/error.rb +482 -482
  15. data/lib/windows/eventlog.rb +78 -78
  16. data/lib/windows/file.rb +262 -262
  17. data/lib/windows/file_mapping.rb +23 -23
  18. data/lib/windows/filesystem.rb +13 -13
  19. data/lib/windows/gdi/bitmap.rb +63 -63
  20. data/lib/windows/gdi/device_context.rb +44 -44
  21. data/lib/windows/gdi/metafile.rb +38 -38
  22. data/lib/windows/gdi/painting_drawing.rb +113 -113
  23. data/lib/windows/handle.rb +21 -21
  24. data/lib/windows/library.rb +42 -42
  25. data/lib/windows/limits.rb +31 -31
  26. data/lib/windows/mailslot.rb +22 -22
  27. data/lib/windows/memory.rb +126 -126
  28. data/lib/windows/msvcrt/buffer.rb +73 -73
  29. data/lib/windows/msvcrt/directory.rb +29 -29
  30. data/lib/windows/msvcrt/file.rb +45 -45
  31. data/lib/windows/msvcrt/io.rb +71 -71
  32. data/lib/windows/msvcrt/time.rb +167 -167
  33. data/lib/windows/national.rb +578 -578
  34. data/lib/windows/network/management.rb +523 -523
  35. data/lib/windows/network/snmp.rb +90 -90
  36. data/lib/windows/network/winsock.rb +126 -126
  37. data/lib/windows/nio.rb +48 -47
  38. data/lib/windows/ntfs/winternl.rb +96 -96
  39. data/lib/windows/path.rb +141 -141
  40. data/lib/windows/pipe.rb +40 -40
  41. data/lib/windows/process.rb +174 -174
  42. data/lib/windows/registry.rb +126 -126
  43. data/lib/windows/security.rb +477 -477
  44. data/lib/windows/security/authentication.rb +30 -30
  45. data/lib/windows/service.rb +140 -140
  46. data/lib/windows/shell.rb +169 -169
  47. data/lib/windows/sound.rb +37 -37
  48. data/lib/windows/synchronize.rb +131 -131
  49. data/lib/windows/system_info.rb +227 -222
  50. data/lib/windows/thread.rb +62 -62
  51. data/lib/windows/time.rb +46 -46
  52. data/lib/windows/tool_helper.rb +34 -34
  53. data/lib/windows/volume.rb +59 -59
  54. data/lib/windows/window.rb +79 -79
  55. data/lib/windows/window/classes.rb +57 -57
  56. data/lib/windows/window/dialog.rb +89 -89
  57. data/lib/windows/window/menu.rb +100 -100
  58. data/lib/windows/window/message.rb +295 -295
  59. data/lib/windows/window/properties.rb +18 -18
  60. data/lib/windows/window/timer.rb +17 -17
  61. data/test/tc_clipboard.rb +41 -41
  62. data/test/tc_com.rb +32 -32
  63. data/test/tc_com_automation.rb +15 -15
  64. data/test/tc_console.rb +108 -108
  65. data/test/tc_debug.rb +48 -48
  66. data/test/tc_device_io.rb +29 -29
  67. data/test/tc_directory.rb +25 -25
  68. data/test/tc_error.rb +49 -49
  69. data/test/tc_eventlog.rb +58 -58
  70. data/test/tc_file.rb +67 -67
  71. data/test/tc_file_mapping.rb +38 -38
  72. data/test/tc_filesystem.rb +27 -27
  73. data/test/tc_gdi_bitmap.rb +25 -25
  74. data/test/tc_gdi_metafile.rb +23 -23
  75. data/test/tc_handle.rb +36 -36
  76. data/test/tc_library.rb +37 -37
  77. data/test/tc_limits.rb +34 -34
  78. data/test/tc_mailslot.rb +22 -22
  79. data/test/tc_memory.rb +44 -44
  80. data/test/tc_msvcrt_buffer.rb +68 -68
  81. data/test/tc_msvcrt_directory.rb +98 -98
  82. data/test/tc_msvcrt_file.rb +80 -80
  83. data/test/tc_msvcrt_io.rb +48 -48
  84. data/test/tc_msvcrt_string.rb +93 -93
  85. data/test/tc_msvcrt_time.rb +29 -29
  86. data/test/tc_national.rb +38 -38
  87. data/test/tc_network_management.rb +32 -32
  88. data/test/tc_network_snmp.rb +31 -31
  89. data/test/tc_network_winsock.rb +34 -34
  90. data/test/tc_nio.rb +32 -32
  91. data/test/tc_ntfs_winternl.rb +29 -29
  92. data/test/tc_path.rb +90 -90
  93. data/test/tc_pipe.rb +53 -53
  94. data/test/tc_process.rb +24 -24
  95. data/test/tc_registry.rb +29 -29
  96. data/test/tc_security.rb +104 -104
  97. data/test/tc_security_authentication.rb +34 -34
  98. data/test/tc_service.rb +57 -57
  99. data/test/tc_shell.rb +34 -34
  100. data/test/tc_sound.rb +37 -37
  101. data/test/tc_synchronize.rb +75 -75
  102. data/test/tc_system_info.rb +43 -43
  103. data/test/tc_thread.rb +29 -29
  104. data/test/tc_time.rb +32 -32
  105. data/test/tc_tool_helper.rb +29 -29
  106. data/test/tc_volume.rb +47 -47
  107. data/test/tc_window.rb +45 -45
  108. data/test/tc_window_classes.rb +33 -33
  109. data/test/tc_window_dialog.rb +33 -33
  110. data/test/tc_window_menu.rb +29 -29
  111. data/test/tc_window_message.rb +33 -33
  112. data/test/tc_window_properties.rb +29 -29
  113. data/test/tc_window_timer.rb +29 -29
  114. data/windows-pr.gemspec +34 -34
  115. metadata +4 -4
data/lib/windows/debug.rb CHANGED
@@ -1,33 +1,33 @@
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
+ 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,246 +1,246 @@
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
+ # 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