windows-pr 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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