windows-pr 1.1.2 → 1.1.3

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 (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