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
@@ -1,78 +1,78 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module EventLog
5
- API.auto_namespace = 'Windows::EventLog'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- EVENTLOG_SEQUENTIAL_READ = 0x0001
11
- EVENTLOG_SEEK_READ = 0x0002
12
- EVENTLOG_FORWARDS_READ = 0x0004
13
- EVENTLOG_BACKWARDS_READ = 0x0008
14
-
15
- EVENTLOG_SUCCESS = 0x0000
16
- EVENTLOG_ERROR_TYPE = 0x0001
17
- EVENTLOG_WARNING_TYPE = 0x0002
18
- EVENTLOG_INFORMATION_TYPE = 0x0004
19
- EVENTLOG_AUDIT_SUCCESS = 0x0008
20
- EVENTLOG_AUDIT_FAILURE = 0x0010
21
-
22
- EVENTLOG_FULL_INFO = 0
23
-
24
- API.new('BackupEventLog', 'LS', 'B', 'advapi32')
25
- API.new('ClearEventLog', 'LS', 'B', 'advapi32')
26
- API.new('CloseEventLog', 'L', 'B', 'advapi32')
27
- API.new('DeregisterEventSource', 'L', 'B', 'advapi32')
28
- API.new('GetEventLogInformation', 'LLPLP', 'B', 'advapi32')
29
- API.new('GetNumberOfEventLogRecords', 'LP', 'B', 'advapi32')
30
- API.new('GetOldestEventLogRecord', 'LP', 'B', 'advapi32')
31
- API.new('NotifyChangeEventLog', 'LL', 'B', 'advapi32')
32
- API.new('OpenBackupEventLog', 'SS', 'L', 'advapi32')
33
- API.new('OpenEventLog', 'SS', 'L', 'advapi32')
34
- API.new('ReadEventLog', 'LLLPLPP', 'B', 'advapi32')
35
- API.new('RegisterEventSource', 'SS', 'L', 'advapi32')
36
- API.new('ReportEvent', 'LIILPILPP', 'B', 'advapi32')
37
-
38
- begin
39
- API.new('EvtArchiveExportedLog', 'LPLL', 'B', 'wevtapi')
40
- API.new('EvtCancel', 'L', 'B', 'wevtapi')
41
- API.new('EvtClearLog', 'LPPL', 'B', 'wevtapi')
42
- API.new('EvtClose', 'L', 'B', 'wevtapi')
43
- API.new('EvtCreateBookmark', 'L', 'L', 'wevtapi')
44
- API.new('EvtCreateRenderContext', 'LPL', 'L', 'wevtapi')
45
- API.new('EvtExportLog', 'LPPPL', 'B', 'wevtapi')
46
- API.new('EvtFormatMessage', 'LLLLPLLPP', 'B', 'wevtapi')
47
- API.new('EvtGetChannelConfigProperty', 'LLLLPP', 'B', 'wevtapi')
48
- API.new('EvtGetEventInfo', 'LLLPP', 'B', 'wevtapi')
49
- API.new('EvtGetEventMetadataProperty', 'LLLLPP', 'B', 'wevtapi')
50
- API.new('EvtGetExtendedStatus', 'LPP', 'B', 'wevtapi')
51
- API.new('EvtGetLogInfo', 'LLLPP', 'B', 'wevtapi')
52
- API.new('EvtGetObjectArrayProperty', 'LLLLLPP', 'B', 'wevtapi')
53
- API.new('EvtGetObjectArraySize', 'LP', 'B', 'wevtapi')
54
- API.new('EvtGetPublisherMetadataProperty', 'LLLLPP', 'B', 'wevtapi')
55
- API.new('EvtGetQueryInfo', 'LLLPP', 'B', 'wevtapi')
56
- API.new('EvtNext', 'LLPLLP', 'B', 'wevtapi')
57
- API.new('EvtNextChannelPath', 'LLPP', 'B', 'wevtapi')
58
- API.new('EvtNextEventMetadata', 'LL', 'L', 'wevtapi')
59
- API.new('EvtNextPublisherId', 'LLPP', 'B', 'wevtapi')
60
- API.new('EvtOpenChannelConfig', 'LPL', 'L', 'wevtapi')
61
- API.new('EvtOpenChannelEnum', 'LL', 'L', 'wevtapi')
62
- API.new('EvtOpenEventMetadataEnum', 'LL', 'L', 'wevtapi')
63
- API.new('EvtOpenLog', 'LPL', 'L', 'wevtapi')
64
- API.new('EvtOpenPublisherEnum', 'LL', 'L', 'wevtapi')
65
- API.new('EvtOpenPublisherMetadata', 'LPPLL', 'L', 'wevtapi')
66
- API.new('EvtOpenSession', 'LLLL', 'L', 'wevtapi')
67
- API.new('EvtQuery', 'LPPL', 'L', 'wevtapi')
68
- API.new('EvtRender', 'LLLLPPP', 'B', 'wevtapi')
69
- API.new('EvtSaveChannelConfig', 'LL', 'B', 'wevtapi')
70
- API.new('EvtSeek', 'LLLLL', 'B', 'wevtapi')
71
- API.new('EvtSetChannelConfigProperty', 'LLLP', 'B', 'wevtapi')
72
- API.new('EvtSubscribe', 'LLPPLPKL', 'L', 'wevtapi')
73
- API.new('EvtUpdateBookmark', 'LL', 'B', 'wevtapi')
74
- rescue Win32::API::LoadLibraryError
75
- # Windows Vista or later
76
- end
77
- end
78
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module EventLog
5
+ API.auto_namespace = 'Windows::EventLog'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ EVENTLOG_SEQUENTIAL_READ = 0x0001
11
+ EVENTLOG_SEEK_READ = 0x0002
12
+ EVENTLOG_FORWARDS_READ = 0x0004
13
+ EVENTLOG_BACKWARDS_READ = 0x0008
14
+
15
+ EVENTLOG_SUCCESS = 0x0000
16
+ EVENTLOG_ERROR_TYPE = 0x0001
17
+ EVENTLOG_WARNING_TYPE = 0x0002
18
+ EVENTLOG_INFORMATION_TYPE = 0x0004
19
+ EVENTLOG_AUDIT_SUCCESS = 0x0008
20
+ EVENTLOG_AUDIT_FAILURE = 0x0010
21
+
22
+ EVENTLOG_FULL_INFO = 0
23
+
24
+ API.new('BackupEventLog', 'LS', 'B', 'advapi32')
25
+ API.new('ClearEventLog', 'LS', 'B', 'advapi32')
26
+ API.new('CloseEventLog', 'L', 'B', 'advapi32')
27
+ API.new('DeregisterEventSource', 'L', 'B', 'advapi32')
28
+ API.new('GetEventLogInformation', 'LLPLP', 'B', 'advapi32')
29
+ API.new('GetNumberOfEventLogRecords', 'LP', 'B', 'advapi32')
30
+ API.new('GetOldestEventLogRecord', 'LP', 'B', 'advapi32')
31
+ API.new('NotifyChangeEventLog', 'LL', 'B', 'advapi32')
32
+ API.new('OpenBackupEventLog', 'SS', 'L', 'advapi32')
33
+ API.new('OpenEventLog', 'SS', 'L', 'advapi32')
34
+ API.new('ReadEventLog', 'LLLPLPP', 'B', 'advapi32')
35
+ API.new('RegisterEventSource', 'SS', 'L', 'advapi32')
36
+ API.new('ReportEvent', 'LIILPILPP', 'B', 'advapi32')
37
+
38
+ begin
39
+ API.new('EvtArchiveExportedLog', 'LPLL', 'B', 'wevtapi')
40
+ API.new('EvtCancel', 'L', 'B', 'wevtapi')
41
+ API.new('EvtClearLog', 'LPPL', 'B', 'wevtapi')
42
+ API.new('EvtClose', 'L', 'B', 'wevtapi')
43
+ API.new('EvtCreateBookmark', 'L', 'L', 'wevtapi')
44
+ API.new('EvtCreateRenderContext', 'LPL', 'L', 'wevtapi')
45
+ API.new('EvtExportLog', 'LPPPL', 'B', 'wevtapi')
46
+ API.new('EvtFormatMessage', 'LLLLPLLPP', 'B', 'wevtapi')
47
+ API.new('EvtGetChannelConfigProperty', 'LLLLPP', 'B', 'wevtapi')
48
+ API.new('EvtGetEventInfo', 'LLLPP', 'B', 'wevtapi')
49
+ API.new('EvtGetEventMetadataProperty', 'LLLLPP', 'B', 'wevtapi')
50
+ API.new('EvtGetExtendedStatus', 'LPP', 'B', 'wevtapi')
51
+ API.new('EvtGetLogInfo', 'LLLPP', 'B', 'wevtapi')
52
+ API.new('EvtGetObjectArrayProperty', 'LLLLLPP', 'B', 'wevtapi')
53
+ API.new('EvtGetObjectArraySize', 'LP', 'B', 'wevtapi')
54
+ API.new('EvtGetPublisherMetadataProperty', 'LLLLPP', 'B', 'wevtapi')
55
+ API.new('EvtGetQueryInfo', 'LLLPP', 'B', 'wevtapi')
56
+ API.new('EvtNext', 'LLPLLP', 'B', 'wevtapi')
57
+ API.new('EvtNextChannelPath', 'LLPP', 'B', 'wevtapi')
58
+ API.new('EvtNextEventMetadata', 'LL', 'L', 'wevtapi')
59
+ API.new('EvtNextPublisherId', 'LLPP', 'B', 'wevtapi')
60
+ API.new('EvtOpenChannelConfig', 'LPL', 'L', 'wevtapi')
61
+ API.new('EvtOpenChannelEnum', 'LL', 'L', 'wevtapi')
62
+ API.new('EvtOpenEventMetadataEnum', 'LL', 'L', 'wevtapi')
63
+ API.new('EvtOpenLog', 'LPL', 'L', 'wevtapi')
64
+ API.new('EvtOpenPublisherEnum', 'LL', 'L', 'wevtapi')
65
+ API.new('EvtOpenPublisherMetadata', 'LPPLL', 'L', 'wevtapi')
66
+ API.new('EvtOpenSession', 'LLLL', 'L', 'wevtapi')
67
+ API.new('EvtQuery', 'LPPL', 'L', 'wevtapi')
68
+ API.new('EvtRender', 'LLLLPPP', 'B', 'wevtapi')
69
+ API.new('EvtSaveChannelConfig', 'LL', 'B', 'wevtapi')
70
+ API.new('EvtSeek', 'LLLLL', 'B', 'wevtapi')
71
+ API.new('EvtSetChannelConfigProperty', 'LLLP', 'B', 'wevtapi')
72
+ API.new('EvtSubscribe', 'LLPPLPKL', 'L', 'wevtapi')
73
+ API.new('EvtUpdateBookmark', 'LL', 'B', 'wevtapi')
74
+ rescue Win32::API::LoadLibraryError
75
+ # Windows Vista or later
76
+ end
77
+ end
78
+ end
data/lib/windows/file.rb CHANGED
@@ -1,262 +1,262 @@
1
- require 'windows/unicode'
2
- require 'windows/security'
3
-
4
- module Windows
5
- module File
6
- include Windows::Unicode
7
- include Windows::Security
8
-
9
- API.auto_namespace = 'Windows::File'
10
- API.auto_constant = true
11
- API.auto_method = true
12
- API.auto_unicode = true
13
-
14
- FILE_BEGIN = 0
15
- FILE_CURRENT = 1
16
- FILE_END = 2
17
-
18
- # File Attributes
19
-
20
- FILE_ATTRIBUTE_READONLY = 0x00000001
21
- FILE_ATTRIBUTE_HIDDEN = 0x00000002
22
- FILE_ATTRIBUTE_SYSTEM = 0x00000004
23
- FILE_ATTRIBUTE_DIRECTORY = 0x00000010
24
- FILE_ATTRIBUTE_ARCHIVE = 0x00000020
25
- FILE_ATTRIBUTE_ENCRYPTED = 0x00000040
26
- FILE_ATTRIBUTE_NORMAL = 0x00000080
27
- FILE_ATTRIBUTE_TEMPORARY = 0x00000100
28
- FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
29
- FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
30
- FILE_ATTRIBUTE_COMPRESSED = 0x00000800
31
- FILE_ATTRIBUTE_OFFLINE = 0x00001000
32
- FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
33
-
34
- # File types
35
-
36
- FILE_TYPE_UNKNOWN = 0x0000
37
- FILE_TYPE_DISK = 0x0001
38
- FILE_TYPE_CHAR = 0x0002
39
- FILE_TYPE_PIPE = 0x0003
40
- FILE_TYPE_REMOTE = 0x8000
41
-
42
- # File compression constants
43
-
44
- COMPRESSION_FORMAT_NONE = 0
45
- COMPRESSION_FORMAT_DEFAULT = 1
46
- COMPRESSION_FORMAT_LZNT1 = 2
47
- COMPRESSION_ENGINE_STANDARD = 0
48
- COMPRESSION_ENGINE_MAXIMUM = 256
49
- ANYSIZE_ARRAY = 1
50
-
51
- # File security and access rights
52
-
53
- FILE_READ_DATA = 1
54
- FILE_LIST_DIRECTORY = 1
55
- FILE_WRITE_DATA = 2
56
- FILE_ADD_FILE = 2
57
- FILE_APPEND_DATA = 4
58
- FILE_ADD_SUBDIRECTORY = 4
59
- FILE_CREATE_PIPE_INSTANCE = 4
60
- FILE_READ_EA = 8
61
- FILE_READ_PROPERTIES = 8
62
- FILE_WRITE_EA = 16
63
- FILE_WRITE_PROPERTIES = 16
64
- FILE_EXECUTE = 32
65
- FILE_TRAVERSE = 32
66
- FILE_DELETE_CHILD = 64
67
- FILE_READ_ATTRIBUTES = 128
68
- FILE_WRITE_ATTRIBUTES = 256
69
-
70
- FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF
71
-
72
- FILE_GENERIC_READ =
73
- STANDARD_RIGHTS_READ |
74
- FILE_READ_DATA |
75
- FILE_READ_ATTRIBUTES |
76
- FILE_READ_EA |
77
- SYNCHRONIZE
78
-
79
- FILE_GENERIC_WRITE =
80
- STANDARD_RIGHTS_WRITE |
81
- FILE_WRITE_DATA |
82
- FILE_WRITE_ATTRIBUTES |
83
- FILE_WRITE_EA |
84
- FILE_APPEND_DATA |
85
- SYNCHRONIZE
86
-
87
- FILE_GENERIC_EXECUTE =
88
- STANDARD_RIGHTS_EXECUTE |
89
- FILE_READ_ATTRIBUTES |
90
- FILE_EXECUTE |
91
- SYNCHRONIZE
92
-
93
- FILE_SHARE_READ = 1
94
- FILE_SHARE_WRITE = 2
95
- FILE_SHARE_DELETE = 4
96
- FILE_NOTIFY_CHANGE_FILE_NAME = 1
97
- FILE_NOTIFY_CHANGE_DIR_NAME = 2
98
- FILE_NOTIFY_CHANGE_ATTRIBUTES = 4
99
- FILE_NOTIFY_CHANGE_SIZE = 8
100
- FILE_NOTIFY_CHANGE_LAST_WRITE = 16
101
- FILE_NOTIFY_CHANGE_LAST_ACCESS = 32
102
- FILE_NOTIFY_CHANGE_CREATION = 64
103
- FILE_NOTIFY_CHANGE_SECURITY = 256
104
- FILE_CASE_SENSITIVE_SEARCH = 1
105
- FILE_CASE_PRESERVED_NAMES = 2
106
- FILE_UNICODE_ON_DISK = 4
107
- FILE_PERSISTENT_ACLS = 8
108
- FILE_FILE_COMPRESSION = 16
109
- FILE_VOLUME_QUOTAS = 32
110
- FILE_SUPPORTS_SPARSE_FILES = 64
111
- FILE_SUPPORTS_REPARSE_POINTS = 128
112
- FILE_SUPPORTS_REMOTE_STORAGE = 256
113
- FILE_VOLUME_IS_COMPRESSED = 0x8000
114
- FILE_SUPPORTS_OBJECT_IDS = 0x10000
115
- FILE_SUPPORTS_ENCRYPTION = 0x20000
116
-
117
- # File flags
118
-
119
- FILE_FLAG_WRITE_THROUGH = 0x80000000
120
- FILE_FLAG_OVERLAPPED = 0x40000000
121
- FILE_FLAG_NO_BUFFERING = 0x20000000
122
- FILE_FLAG_RANDOM_ACCESS = 0x10000000
123
- FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
124
- FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
125
- FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
126
- FILE_FLAG_POSIX_SEMANTICS = 0x01000000
127
- FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
128
- FILE_FLAG_OPEN_NO_RECALL = 0x00100000
129
- FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
130
-
131
- # File creation disposition
132
-
133
- CREATE_NEW = 1
134
- CREATE_ALWAYS = 2
135
- OPEN_EXISTING = 3
136
- OPEN_ALWAYS = 4
137
- TRUNCATE_EXISTING = 5
138
-
139
- SECTION_QUERY = 0x0001
140
- SECTION_MAP_WRITE = 0x0002
141
- SECTION_MAP_READ = 0x0004
142
- SECTION_MAP_EXECUTE = 0x0008
143
- SECTION_EXTEND_SIZE = 0x0010
144
-
145
- SECTION_ALL_ACCESS =
146
- STANDARD_RIGHTS_REQUIRED |
147
- SECTION_QUERY |
148
- SECTION_MAP_WRITE |
149
- SECTION_MAP_READ |
150
- SECTION_MAP_EXECUTE |
151
- SECTION_EXTEND_SIZE
152
-
153
- # Errors
154
-
155
- INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF
156
- INVALID_SET_FILE_POINTER = 0xFFFFFFFF
157
- INVALID_FILE_SIZE = 0xFFFFFFFF
158
-
159
- # Defined in Windows::Handle as well. Here for convenience.
160
-
161
- INVALID_HANDLE_VALUE = 0xFFFFFFFF unless defined? INVALID_HANDLE_VALUE
162
-
163
- # Misc
164
-
165
- LOCKFILE_EXCLUSIVE_LOCK = 0x00000001
166
- LOCKFILE_FAIL_IMMEDIATELY = 0x00000002
167
- MOVEFILE_REPLACE_EXISTING = 0x00000001
168
- MOVEFILE_COPY_ALLOWED = 0x00000002
169
- MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004
170
- MOVEFILE_WRITE_THROUGH = 0x00000008
171
- MOVEFILE_CREATE_HARDLINK = 0x00000010
172
- MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000020
173
- SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
174
-
175
- # FILE_INFO_BY_HANDLE_CLASS enum
176
-
177
- FileBasicInfo = 0
178
- FileStandardInfo = 1
179
- FileNameInfo = 2
180
- FileRenameInfo = 3
181
- FileDispositionInfo = 4
182
- FileAllocationInfo = 5
183
- FileEndOfFileInfo = 6
184
- FileStreamInfo = 7
185
- FileCompressionInfo = 8
186
- FileAttributeTagInfo = 9
187
- FileIdBothDirectoryInfo = 10
188
- FileIdBothDirectoryRestartInfo = 11
189
- FileIoPriorityHintInfo = 12
190
- MaximumFileInfoByHandleClass = 13
191
-
192
- # Reparse point tags
193
-
194
- IO_REPARSE_TAG_DFS = 0x8000000A
195
- IO_REPARSE_TAG_DFSR = 0x80000012
196
- IO_REPARSE_TAG_HSM = 0xC0000004
197
- IO_REPARSE_TAG_HSM2 = 0x80000006
198
- IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
199
- IO_REPARSE_TAG_SIS = 0x80000007
200
- IO_REPARSE_TAG_SYMLINK = 0xA000000C
201
-
202
- API.new('CopyFile', 'SSI', 'B')
203
- API.new('CopyFileEx', 'SSKPPL', 'B')
204
- API.new('CreateFile', 'SLLPLLL', 'L')
205
- API.new('CreateHardLink', 'SSP', 'B')
206
- API.new('DecryptFile', 'SL', 'B', 'advapi32')
207
- API.new('DeleteFile', 'S', 'B')
208
- API.new('EncryptFile', 'S', 'B', 'advapi32')
209
- API.new('FindClose', 'L', 'B')
210
- API.new('FindFirstFile', 'SP', 'L')
211
- API.new('FindFirstFileEx', 'SIPIII', 'L')
212
- API.new('FindNextFile', 'LP', 'B')
213
- API.new('FlushFileBuffers', 'L', 'B')
214
- API.new('GetBinaryType', 'SP', 'B')
215
- API.new('GetFileAttributes', 'S', 'L')
216
- API.new('GetFileAttributesEx', 'SPP', 'I')
217
- API.new('GetFileInformationByHandle', 'LP', 'B')
218
- API.new('GetFileSize', 'LP', 'L')
219
- API.new('GetFileSizeEx', 'LP', 'B')
220
- API.new('GetFileType', 'L', 'L')
221
- API.new('GetFullPathName', 'SLPP', 'L')
222
- API.new('GetLongPathName', 'SPL', 'L')
223
- API.new('GetShortPathName', 'SPL', 'L')
224
- API.new('LockFile', 'LLLLL', 'B')
225
- API.new('LockFileEx', 'LLLLLL', 'B')
226
- API.new('MoveFile', 'SS', 'B')
227
- API.new('MoveFileEx', 'SSL', 'B')
228
- API.new('ReadFile', 'LPLPP', 'B')
229
- API.new('ReadFileEx', 'LPLPK', 'B')
230
- API.new('SetEndOfFile', 'L', 'B')
231
- API.new('SetFileAttributes', 'SL', 'B')
232
- API.new('UnlockFile', 'LLLLL', 'B')
233
- API.new('UnlockFileEx', 'LLLLL', 'B')
234
- API.new('WriteFile', 'LPLPP', 'B')
235
- API.new('WriteFileEx', 'LPLPK', 'B')
236
-
237
- begin
238
- API.new('SetFileShortName', 'LP', 'B')
239
- API.new('SetFileValidData', 'LL', 'B')
240
- rescue Win32::API::LoadLibraryError
241
- # Windows XP or later
242
- end
243
-
244
- begin
245
- API.new('Wow64DisableWow64FsRedirection', 'P', 'B')
246
- API.new('Wow64EnableWow64FsRedirection', 'I', 'I')
247
- API.new('Wow64RevertWow64FsRedirection', 'L', 'B')
248
- rescue Win32::API::LoadLibraryError
249
- # Windows XP 64-bit and later
250
- end
251
-
252
- begin
253
- API.new('CreateSymbolicLink', 'SSL', 'B')
254
- API.new('CreateSymbolicLinkTransacted', 'SSLL', 'B')
255
- API.new('GetFileInformationByHandleEx', 'LLPL', 'B')
256
- API.new('GetFinalPathNameByHandle', 'LPLL', 'L')
257
- API.new('SetFileInformationByHandle', 'LLPL', 'B')
258
- rescue Win32::API::LoadLibraryError
259
- # Windows Vista
260
- end
261
- end
262
- end
1
+ require 'windows/unicode'
2
+ require 'windows/security'
3
+
4
+ module Windows
5
+ module File
6
+ include Windows::Unicode
7
+ include Windows::Security
8
+
9
+ API.auto_namespace = 'Windows::File'
10
+ API.auto_constant = true
11
+ API.auto_method = true
12
+ API.auto_unicode = true
13
+
14
+ FILE_BEGIN = 0
15
+ FILE_CURRENT = 1
16
+ FILE_END = 2
17
+
18
+ # File Attributes
19
+
20
+ FILE_ATTRIBUTE_READONLY = 0x00000001
21
+ FILE_ATTRIBUTE_HIDDEN = 0x00000002
22
+ FILE_ATTRIBUTE_SYSTEM = 0x00000004
23
+ FILE_ATTRIBUTE_DIRECTORY = 0x00000010
24
+ FILE_ATTRIBUTE_ARCHIVE = 0x00000020
25
+ FILE_ATTRIBUTE_ENCRYPTED = 0x00000040
26
+ FILE_ATTRIBUTE_NORMAL = 0x00000080
27
+ FILE_ATTRIBUTE_TEMPORARY = 0x00000100
28
+ FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
29
+ FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
30
+ FILE_ATTRIBUTE_COMPRESSED = 0x00000800
31
+ FILE_ATTRIBUTE_OFFLINE = 0x00001000
32
+ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
33
+
34
+ # File types
35
+
36
+ FILE_TYPE_UNKNOWN = 0x0000
37
+ FILE_TYPE_DISK = 0x0001
38
+ FILE_TYPE_CHAR = 0x0002
39
+ FILE_TYPE_PIPE = 0x0003
40
+ FILE_TYPE_REMOTE = 0x8000
41
+
42
+ # File compression constants
43
+
44
+ COMPRESSION_FORMAT_NONE = 0
45
+ COMPRESSION_FORMAT_DEFAULT = 1
46
+ COMPRESSION_FORMAT_LZNT1 = 2
47
+ COMPRESSION_ENGINE_STANDARD = 0
48
+ COMPRESSION_ENGINE_MAXIMUM = 256
49
+ ANYSIZE_ARRAY = 1
50
+
51
+ # File security and access rights
52
+
53
+ FILE_READ_DATA = 1
54
+ FILE_LIST_DIRECTORY = 1
55
+ FILE_WRITE_DATA = 2
56
+ FILE_ADD_FILE = 2
57
+ FILE_APPEND_DATA = 4
58
+ FILE_ADD_SUBDIRECTORY = 4
59
+ FILE_CREATE_PIPE_INSTANCE = 4
60
+ FILE_READ_EA = 8
61
+ FILE_READ_PROPERTIES = 8
62
+ FILE_WRITE_EA = 16
63
+ FILE_WRITE_PROPERTIES = 16
64
+ FILE_EXECUTE = 32
65
+ FILE_TRAVERSE = 32
66
+ FILE_DELETE_CHILD = 64
67
+ FILE_READ_ATTRIBUTES = 128
68
+ FILE_WRITE_ATTRIBUTES = 256
69
+
70
+ FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF
71
+
72
+ FILE_GENERIC_READ =
73
+ STANDARD_RIGHTS_READ |
74
+ FILE_READ_DATA |
75
+ FILE_READ_ATTRIBUTES |
76
+ FILE_READ_EA |
77
+ SYNCHRONIZE
78
+
79
+ FILE_GENERIC_WRITE =
80
+ STANDARD_RIGHTS_WRITE |
81
+ FILE_WRITE_DATA |
82
+ FILE_WRITE_ATTRIBUTES |
83
+ FILE_WRITE_EA |
84
+ FILE_APPEND_DATA |
85
+ SYNCHRONIZE
86
+
87
+ FILE_GENERIC_EXECUTE =
88
+ STANDARD_RIGHTS_EXECUTE |
89
+ FILE_READ_ATTRIBUTES |
90
+ FILE_EXECUTE |
91
+ SYNCHRONIZE
92
+
93
+ FILE_SHARE_READ = 1
94
+ FILE_SHARE_WRITE = 2
95
+ FILE_SHARE_DELETE = 4
96
+ FILE_NOTIFY_CHANGE_FILE_NAME = 1
97
+ FILE_NOTIFY_CHANGE_DIR_NAME = 2
98
+ FILE_NOTIFY_CHANGE_ATTRIBUTES = 4
99
+ FILE_NOTIFY_CHANGE_SIZE = 8
100
+ FILE_NOTIFY_CHANGE_LAST_WRITE = 16
101
+ FILE_NOTIFY_CHANGE_LAST_ACCESS = 32
102
+ FILE_NOTIFY_CHANGE_CREATION = 64
103
+ FILE_NOTIFY_CHANGE_SECURITY = 256
104
+ FILE_CASE_SENSITIVE_SEARCH = 1
105
+ FILE_CASE_PRESERVED_NAMES = 2
106
+ FILE_UNICODE_ON_DISK = 4
107
+ FILE_PERSISTENT_ACLS = 8
108
+ FILE_FILE_COMPRESSION = 16
109
+ FILE_VOLUME_QUOTAS = 32
110
+ FILE_SUPPORTS_SPARSE_FILES = 64
111
+ FILE_SUPPORTS_REPARSE_POINTS = 128
112
+ FILE_SUPPORTS_REMOTE_STORAGE = 256
113
+ FILE_VOLUME_IS_COMPRESSED = 0x8000
114
+ FILE_SUPPORTS_OBJECT_IDS = 0x10000
115
+ FILE_SUPPORTS_ENCRYPTION = 0x20000
116
+
117
+ # File flags
118
+
119
+ FILE_FLAG_WRITE_THROUGH = 0x80000000
120
+ FILE_FLAG_OVERLAPPED = 0x40000000
121
+ FILE_FLAG_NO_BUFFERING = 0x20000000
122
+ FILE_FLAG_RANDOM_ACCESS = 0x10000000
123
+ FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
124
+ FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
125
+ FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
126
+ FILE_FLAG_POSIX_SEMANTICS = 0x01000000
127
+ FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
128
+ FILE_FLAG_OPEN_NO_RECALL = 0x00100000
129
+ FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
130
+
131
+ # File creation disposition
132
+
133
+ CREATE_NEW = 1
134
+ CREATE_ALWAYS = 2
135
+ OPEN_EXISTING = 3
136
+ OPEN_ALWAYS = 4
137
+ TRUNCATE_EXISTING = 5
138
+
139
+ SECTION_QUERY = 0x0001
140
+ SECTION_MAP_WRITE = 0x0002
141
+ SECTION_MAP_READ = 0x0004
142
+ SECTION_MAP_EXECUTE = 0x0008
143
+ SECTION_EXTEND_SIZE = 0x0010
144
+
145
+ SECTION_ALL_ACCESS =
146
+ STANDARD_RIGHTS_REQUIRED |
147
+ SECTION_QUERY |
148
+ SECTION_MAP_WRITE |
149
+ SECTION_MAP_READ |
150
+ SECTION_MAP_EXECUTE |
151
+ SECTION_EXTEND_SIZE
152
+
153
+ # Errors
154
+
155
+ INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF
156
+ INVALID_SET_FILE_POINTER = 0xFFFFFFFF
157
+ INVALID_FILE_SIZE = 0xFFFFFFFF
158
+
159
+ # Defined in Windows::Handle as well. Here for convenience.
160
+
161
+ INVALID_HANDLE_VALUE = 0xFFFFFFFF unless defined? INVALID_HANDLE_VALUE
162
+
163
+ # Misc
164
+
165
+ LOCKFILE_EXCLUSIVE_LOCK = 0x00000001
166
+ LOCKFILE_FAIL_IMMEDIATELY = 0x00000002
167
+ MOVEFILE_REPLACE_EXISTING = 0x00000001
168
+ MOVEFILE_COPY_ALLOWED = 0x00000002
169
+ MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004
170
+ MOVEFILE_WRITE_THROUGH = 0x00000008
171
+ MOVEFILE_CREATE_HARDLINK = 0x00000010
172
+ MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000020
173
+ SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
174
+
175
+ # FILE_INFO_BY_HANDLE_CLASS enum
176
+
177
+ FileBasicInfo = 0
178
+ FileStandardInfo = 1
179
+ FileNameInfo = 2
180
+ FileRenameInfo = 3
181
+ FileDispositionInfo = 4
182
+ FileAllocationInfo = 5
183
+ FileEndOfFileInfo = 6
184
+ FileStreamInfo = 7
185
+ FileCompressionInfo = 8
186
+ FileAttributeTagInfo = 9
187
+ FileIdBothDirectoryInfo = 10
188
+ FileIdBothDirectoryRestartInfo = 11
189
+ FileIoPriorityHintInfo = 12
190
+ MaximumFileInfoByHandleClass = 13
191
+
192
+ # Reparse point tags
193
+
194
+ IO_REPARSE_TAG_DFS = 0x8000000A
195
+ IO_REPARSE_TAG_DFSR = 0x80000012
196
+ IO_REPARSE_TAG_HSM = 0xC0000004
197
+ IO_REPARSE_TAG_HSM2 = 0x80000006
198
+ IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
199
+ IO_REPARSE_TAG_SIS = 0x80000007
200
+ IO_REPARSE_TAG_SYMLINK = 0xA000000C
201
+
202
+ API.new('CopyFile', 'SSI', 'B')
203
+ API.new('CopyFileEx', 'SSKPPL', 'B')
204
+ API.new('CreateFile', 'SLLPLLL', 'L')
205
+ API.new('CreateHardLink', 'SSP', 'B')
206
+ API.new('DecryptFile', 'SL', 'B', 'advapi32')
207
+ API.new('DeleteFile', 'S', 'B')
208
+ API.new('EncryptFile', 'S', 'B', 'advapi32')
209
+ API.new('FindClose', 'L', 'B')
210
+ API.new('FindFirstFile', 'SP', 'L')
211
+ API.new('FindFirstFileEx', 'SIPIII', 'L')
212
+ API.new('FindNextFile', 'LP', 'B')
213
+ API.new('FlushFileBuffers', 'L', 'B')
214
+ API.new('GetBinaryType', 'SP', 'B')
215
+ API.new('GetFileAttributes', 'S', 'L')
216
+ API.new('GetFileAttributesEx', 'SPP', 'I')
217
+ API.new('GetFileInformationByHandle', 'LP', 'B')
218
+ API.new('GetFileSize', 'LP', 'L')
219
+ API.new('GetFileSizeEx', 'LP', 'B')
220
+ API.new('GetFileType', 'L', 'L')
221
+ API.new('GetFullPathName', 'SLPP', 'L')
222
+ API.new('GetLongPathName', 'SPL', 'L')
223
+ API.new('GetShortPathName', 'SPL', 'L')
224
+ API.new('LockFile', 'LLLLL', 'B')
225
+ API.new('LockFileEx', 'LLLLLL', 'B')
226
+ API.new('MoveFile', 'SS', 'B')
227
+ API.new('MoveFileEx', 'SSL', 'B')
228
+ API.new('ReadFile', 'LPLPP', 'B')
229
+ API.new('ReadFileEx', 'LPLPK', 'B')
230
+ API.new('SetEndOfFile', 'L', 'B')
231
+ API.new('SetFileAttributes', 'SL', 'B')
232
+ API.new('UnlockFile', 'LLLLL', 'B')
233
+ API.new('UnlockFileEx', 'LLLLL', 'B')
234
+ API.new('WriteFile', 'LPLPP', 'B')
235
+ API.new('WriteFileEx', 'LPLPK', 'B')
236
+
237
+ begin
238
+ API.new('SetFileShortName', 'LP', 'B')
239
+ API.new('SetFileValidData', 'LL', 'B')
240
+ rescue Win32::API::LoadLibraryError
241
+ # Windows XP or later
242
+ end
243
+
244
+ begin
245
+ API.new('Wow64DisableWow64FsRedirection', 'P', 'B')
246
+ API.new('Wow64EnableWow64FsRedirection', 'I', 'I')
247
+ API.new('Wow64RevertWow64FsRedirection', 'L', 'B')
248
+ rescue Win32::API::LoadLibraryError
249
+ # Windows XP 64-bit and later
250
+ end
251
+
252
+ begin
253
+ API.new('CreateSymbolicLink', 'SSL', 'B')
254
+ API.new('CreateSymbolicLinkTransacted', 'SSLL', 'B')
255
+ API.new('GetFileInformationByHandleEx', 'LLPL', 'B')
256
+ API.new('GetFinalPathNameByHandle', 'LPLL', 'L')
257
+ API.new('SetFileInformationByHandle', 'LLPL', 'B')
258
+ rescue Win32::API::LoadLibraryError
259
+ # Windows Vista
260
+ end
261
+ end
262
+ end