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