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.
- data/CHANGES +408 -404
- data/MANIFEST +65 -65
- data/README +149 -149
- data/Rakefile +52 -52
- data/doc/conversion_guide.txt +37 -37
- data/lib/windows/clipboard.rb +59 -59
- data/lib/windows/com.rb +190 -189
- data/lib/windows/com/automation.rb +147 -147
- data/lib/windows/com/variant.rb +22 -22
- data/lib/windows/console.rb +112 -112
- data/lib/windows/debug.rb +33 -33
- data/lib/windows/device_io.rb +246 -246
- data/lib/windows/directory.rb +25 -25
- data/lib/windows/error.rb +482 -482
- data/lib/windows/eventlog.rb +78 -78
- data/lib/windows/file.rb +262 -262
- data/lib/windows/file_mapping.rb +23 -23
- data/lib/windows/filesystem.rb +13 -13
- data/lib/windows/gdi/bitmap.rb +63 -63
- data/lib/windows/gdi/device_context.rb +44 -44
- data/lib/windows/gdi/metafile.rb +38 -38
- data/lib/windows/gdi/painting_drawing.rb +113 -113
- data/lib/windows/handle.rb +21 -21
- data/lib/windows/library.rb +42 -42
- data/lib/windows/limits.rb +31 -31
- data/lib/windows/mailslot.rb +22 -22
- data/lib/windows/memory.rb +126 -126
- data/lib/windows/msvcrt/buffer.rb +73 -73
- data/lib/windows/msvcrt/directory.rb +29 -29
- data/lib/windows/msvcrt/file.rb +45 -45
- data/lib/windows/msvcrt/io.rb +71 -71
- data/lib/windows/msvcrt/time.rb +167 -167
- data/lib/windows/national.rb +578 -578
- data/lib/windows/network/management.rb +523 -523
- data/lib/windows/network/snmp.rb +90 -90
- data/lib/windows/network/winsock.rb +126 -126
- data/lib/windows/nio.rb +48 -47
- data/lib/windows/ntfs/winternl.rb +96 -96
- data/lib/windows/path.rb +141 -141
- data/lib/windows/pipe.rb +40 -40
- data/lib/windows/process.rb +174 -174
- data/lib/windows/registry.rb +126 -126
- data/lib/windows/security.rb +477 -477
- data/lib/windows/security/authentication.rb +30 -30
- data/lib/windows/service.rb +140 -140
- data/lib/windows/shell.rb +169 -169
- data/lib/windows/sound.rb +37 -37
- data/lib/windows/synchronize.rb +131 -131
- data/lib/windows/system_info.rb +227 -222
- data/lib/windows/thread.rb +62 -62
- data/lib/windows/time.rb +46 -46
- data/lib/windows/tool_helper.rb +34 -34
- data/lib/windows/volume.rb +59 -59
- data/lib/windows/window.rb +79 -79
- data/lib/windows/window/classes.rb +57 -57
- data/lib/windows/window/dialog.rb +89 -89
- data/lib/windows/window/menu.rb +100 -100
- data/lib/windows/window/message.rb +295 -295
- data/lib/windows/window/properties.rb +18 -18
- data/lib/windows/window/timer.rb +17 -17
- data/test/tc_clipboard.rb +41 -41
- data/test/tc_com.rb +32 -32
- data/test/tc_com_automation.rb +15 -15
- data/test/tc_console.rb +108 -108
- data/test/tc_debug.rb +48 -48
- data/test/tc_device_io.rb +29 -29
- data/test/tc_directory.rb +25 -25
- data/test/tc_error.rb +49 -49
- data/test/tc_eventlog.rb +58 -58
- data/test/tc_file.rb +67 -67
- data/test/tc_file_mapping.rb +38 -38
- data/test/tc_filesystem.rb +27 -27
- data/test/tc_gdi_bitmap.rb +25 -25
- data/test/tc_gdi_metafile.rb +23 -23
- data/test/tc_handle.rb +36 -36
- data/test/tc_library.rb +37 -37
- data/test/tc_limits.rb +34 -34
- data/test/tc_mailslot.rb +22 -22
- data/test/tc_memory.rb +44 -44
- data/test/tc_msvcrt_buffer.rb +68 -68
- data/test/tc_msvcrt_directory.rb +98 -98
- data/test/tc_msvcrt_file.rb +80 -80
- data/test/tc_msvcrt_io.rb +48 -48
- data/test/tc_msvcrt_string.rb +93 -93
- data/test/tc_msvcrt_time.rb +29 -29
- data/test/tc_national.rb +38 -38
- data/test/tc_network_management.rb +32 -32
- data/test/tc_network_snmp.rb +31 -31
- data/test/tc_network_winsock.rb +34 -34
- data/test/tc_nio.rb +32 -32
- data/test/tc_ntfs_winternl.rb +29 -29
- data/test/tc_path.rb +90 -90
- data/test/tc_pipe.rb +53 -53
- data/test/tc_process.rb +24 -24
- data/test/tc_registry.rb +29 -29
- data/test/tc_security.rb +104 -104
- data/test/tc_security_authentication.rb +34 -34
- data/test/tc_service.rb +57 -57
- data/test/tc_shell.rb +34 -34
- data/test/tc_sound.rb +37 -37
- data/test/tc_synchronize.rb +75 -75
- data/test/tc_system_info.rb +43 -43
- data/test/tc_thread.rb +29 -29
- data/test/tc_time.rb +32 -32
- data/test/tc_tool_helper.rb +29 -29
- data/test/tc_volume.rb +47 -47
- data/test/tc_window.rb +45 -45
- data/test/tc_window_classes.rb +33 -33
- data/test/tc_window_dialog.rb +33 -33
- data/test/tc_window_menu.rb +29 -29
- data/test/tc_window_message.rb +33 -33
- data/test/tc_window_properties.rb +29 -29
- data/test/tc_window_timer.rb +29 -29
- data/windows-pr.gemspec +34 -34
- 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
|
data/lib/windows/device_io.rb
CHANGED
@@ -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
|