windows-pr 0.9.8 → 0.9.9
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 +13 -0
- data/MANIFEST +1 -1
- data/lib/windows/com.rb +2 -3
- data/lib/windows/console.rb +4 -13
- data/lib/windows/debug.rb +2 -4
- data/lib/windows/error.rb +1 -1
- data/lib/windows/eventlog.rb +2 -3
- data/lib/windows/file.rb +6 -9
- data/lib/windows/library.rb +2 -4
- data/lib/windows/memory.rb +1 -1
- data/lib/windows/msvcrt/file.rb +1 -1
- data/lib/windows/msvcrt/io.rb +1 -1
- data/lib/windows/msvcrt/string.rb +1 -1
- data/lib/windows/network/management.rb +2 -2
- data/lib/windows/network/snmp.rb +1 -1
- data/lib/windows/network/winsock.rb +2 -2
- data/lib/windows/nio.rb +2 -3
- data/lib/windows/ntfs/winternl.rb +4 -3
- data/lib/windows/process.rb +2 -4
- data/lib/windows/registry.rb +2 -4
- data/lib/windows/security.rb +6 -6
- data/lib/windows/shell.rb +2 -3
- data/lib/windows/system_info.rb +2 -3
- data/lib/windows/thread.rb +2 -3
- data/lib/windows/time.rb +2 -3
- data/lib/windows/volume.rb +4 -6
- data/lib/windows/window.rb +2 -4
- data/test/tc_msvcrt_directory.rb +2 -1
- data/test/tc_ntfs_winternl.rb +29 -0
- data/windows-pr.gemspec +3 -3
- metadata +6 -4
data/CHANGES
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
= 0.9.9 - 1-Feb-2009
|
2
|
+
* Now explicitly checks for Win32::API::LoadLibraryError in the method
|
3
|
+
declarations instead of Windows::API::Error. The latter no longer exists,
|
4
|
+
and the former is a better way to check for methods that don't exist on
|
5
|
+
particular versions of Windows. This change requires windows-api 0.3.0
|
6
|
+
and win32-api 1.3.0.
|
7
|
+
* Added a few functions to the Windows::Security module.
|
8
|
+
* Added the NtQuerySystemInformation function to the Windows::NTFS::Winternl
|
9
|
+
module.
|
10
|
+
* Added tests for the Windows::NTFS::Winternl module.
|
11
|
+
* Declaration fix in Windows::Security module for Win2k.
|
12
|
+
* Fixed a directory test for Win2k.
|
13
|
+
|
1
14
|
= 0.9.8 - 15-Dec-2008
|
2
15
|
* Added many more functions and a few constants to the Windows::Security
|
3
16
|
module.
|
data/MANIFEST
CHANGED
data/lib/windows/com.rb
CHANGED
@@ -161,11 +161,10 @@ module Windows
|
|
161
161
|
API.new('StringFromGUID2', 'PPI', 'I', 'ole32')
|
162
162
|
API.new('StringFromIID', 'PP', 'L', 'ole32')
|
163
163
|
|
164
|
-
# Windows Vista
|
165
164
|
begin
|
166
165
|
API.new('CoDisconnectContext', 'L', 'L', 'ole32')
|
167
|
-
rescue
|
168
|
-
#
|
166
|
+
rescue Win32::API::LoadLibraryError
|
167
|
+
# Windows Vista
|
169
168
|
end
|
170
169
|
end
|
171
170
|
end
|
data/lib/windows/console.rb
CHANGED
@@ -66,7 +66,8 @@ module Windows
|
|
66
66
|
API.new('GetConsoleMode', 'LP', 'B')
|
67
67
|
API.new('GetConsoleOutputCP', 'V', 'I')
|
68
68
|
API.new('GetConsoleScreenBufferInfo', 'LP', 'B')
|
69
|
-
API.new('GetConsoleTitle', 'PL', 'L')
|
69
|
+
API.new('GetConsoleTitle', 'PL', 'L')
|
70
|
+
API.new('GetConsoleWindow', 'V', 'L')
|
70
71
|
API.new('GetLargestConsoleWindowSize', 'L', 'L')
|
71
72
|
API.new('GetNumberOfConsoleInputEvents', 'LP', 'B')
|
72
73
|
API.new('GetNumberOfConsoleMouseButtons', 'L', 'B')
|
@@ -96,7 +97,6 @@ module Windows
|
|
96
97
|
API.new('WriteConsoleOutputAttribute', 'LPLLP', 'B')
|
97
98
|
API.new('WriteConsoleOutputCharacter', 'LPLLP', 'B')
|
98
99
|
|
99
|
-
# Windows XP or later
|
100
100
|
begin
|
101
101
|
API.new('AttachConsole', 'L', 'B')
|
102
102
|
API.new('GetConsoleDisplayMode', 'P', 'L')
|
@@ -105,17 +105,8 @@ module Windows
|
|
105
105
|
API.new('GetConsoleSelectionInfo', 'P', 'B')
|
106
106
|
API.new('GetCurrentConsoleFont' , 'LIP', 'B')
|
107
107
|
API.new('SetConsoleDisplayMode', 'LLP', 'B')
|
108
|
-
rescue
|
109
|
-
#
|
110
|
-
# check for the existence of the constant in your code.
|
111
|
-
end
|
112
|
-
|
113
|
-
# Windows 2000 or later
|
114
|
-
begin
|
115
|
-
API.new('GetConsoleWindow', 'V', 'L')
|
116
|
-
rescue Windows::API::Error
|
117
|
-
# Do nothing - not supported on current platform. It's up to you to
|
118
|
-
# check for the existence of the constant in your code.
|
108
|
+
rescue Win32::API::LoadLibraryError
|
109
|
+
# Windows XP or later
|
119
110
|
end
|
120
111
|
end
|
121
112
|
end
|
data/lib/windows/debug.rb
CHANGED
@@ -21,15 +21,13 @@ module Windows
|
|
21
21
|
API.new('WaitForDebugEvent', 'PL', 'B')
|
22
22
|
API.new('WriteProcessMemory', 'LLPLP', 'B')
|
23
23
|
|
24
|
-
# Windows XP or later
|
25
24
|
begin
|
26
25
|
API.new('CheckRemoteDebuggerPresent', 'LP', 'B')
|
27
26
|
API.new('DebugActiveProcessStop', 'L', 'B')
|
28
27
|
API.new('DebugBreakProcess', 'L', 'B')
|
29
28
|
API.new('DebugSetProcessKillOnExit', 'I', 'B')
|
30
|
-
rescue
|
31
|
-
#
|
32
|
-
# check for the existence of the constant in your code.
|
29
|
+
rescue Win32::API::LoadLibraryError
|
30
|
+
# Windows XP or later
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
data/lib/windows/error.rb
CHANGED
data/lib/windows/eventlog.rb
CHANGED
@@ -35,7 +35,6 @@ module Windows
|
|
35
35
|
API.new('RegisterEventSource', 'SS', 'L', 'advapi32')
|
36
36
|
API.new('ReportEvent', 'LIILPILPP', 'B', 'advapi32')
|
37
37
|
|
38
|
-
# Windows Vista or later
|
39
38
|
begin
|
40
39
|
API.new('EvtArchiveExportedLog', 'LPLL', 'B', 'wevtapi')
|
41
40
|
API.new('EvtCancel', 'L', 'B', 'wevtapi')
|
@@ -72,8 +71,8 @@ module Windows
|
|
72
71
|
API.new('EvtSetChannelConfigProperty', 'LLLP', 'B', 'wevtapi')
|
73
72
|
API.new('EvtSubscribe', 'LLPPLPKL', 'L', 'wevtapi')
|
74
73
|
API.new('EvtUpdateBookmark', 'LL', 'B', 'wevtapi')
|
75
|
-
rescue
|
76
|
-
#
|
74
|
+
rescue Win32::API::LoadLibraryError
|
75
|
+
# Windows Vista or later
|
77
76
|
end
|
78
77
|
end
|
79
78
|
end
|
data/lib/windows/file.rb
CHANGED
@@ -233,32 +233,29 @@ module Windows
|
|
233
233
|
API.new('WriteFile', 'LPLPP', 'B')
|
234
234
|
API.new('WriteFileEx', 'LPLPK', 'B')
|
235
235
|
|
236
|
-
# XP or later
|
237
236
|
begin
|
238
237
|
API.new('SetFileShortName', 'LP', 'B')
|
239
238
|
API.new('SetFileValidData', 'LL', 'B')
|
240
|
-
rescue
|
241
|
-
#
|
239
|
+
rescue Win32::API::LoadLibraryError
|
240
|
+
# Windows XP or later
|
242
241
|
end
|
243
242
|
|
244
|
-
# XP 64-bit and later
|
245
243
|
begin
|
246
244
|
API.new('Wow64DisableWow64FsRedirection', 'P', 'B')
|
247
245
|
API.new('Wow64EnableWow64FsRedirection', 'I', 'I')
|
248
246
|
API.new('Wow64RevertWow64FsRedirection', 'L', 'B')
|
249
|
-
rescue
|
250
|
-
#
|
247
|
+
rescue Win32::API::LoadLibraryError
|
248
|
+
# Windows XP 64-bit and later
|
251
249
|
end
|
252
250
|
|
253
|
-
# Windows Vista
|
254
251
|
begin
|
255
252
|
API.new('CreateSymbolicLink', 'SSL', 'B')
|
256
253
|
API.new('CreateSymbolicLinkTransacted', 'SSLL', 'B')
|
257
254
|
API.new('GetFileInformationByHandleEx', 'LLPL', 'B')
|
258
255
|
API.new('GetFinalPathNameByHandle', 'LPLL', 'L')
|
259
256
|
API.new('SetFileInformationByHandle', 'LLPL', 'B')
|
260
|
-
rescue
|
261
|
-
#
|
257
|
+
rescue Win32::API::LoadLibraryError
|
258
|
+
# Windows Vista
|
262
259
|
end
|
263
260
|
end
|
264
261
|
end
|
data/lib/windows/library.rb
CHANGED
@@ -31,14 +31,12 @@ module Windows
|
|
31
31
|
API.new('LoadLibraryEx', 'PLL', 'L')
|
32
32
|
API.new('LoadModule', 'PP', 'L')
|
33
33
|
|
34
|
-
# Windows XP or later
|
35
34
|
begin
|
36
35
|
API.new('GetDllDirectory', 'LP', 'L')
|
37
36
|
API.new('GetModuleHandleEx', 'LPP', 'I')
|
38
37
|
API.new('SetDllDirectory', 'P', 'I')
|
39
|
-
rescue
|
40
|
-
#
|
41
|
-
# check for the existence of the constant in your code.
|
38
|
+
rescue Win32::API::LoadLibraryError
|
39
|
+
# Windows XP or later
|
42
40
|
end
|
43
41
|
end
|
44
42
|
end
|
data/lib/windows/memory.rb
CHANGED
@@ -119,7 +119,7 @@ module Windows
|
|
119
119
|
begin
|
120
120
|
API.new('HeapQueryInformation', 'LIPLL', 'B')
|
121
121
|
API.new('HeapSetInformation', 'LIPL', 'B')
|
122
|
-
rescue
|
122
|
+
rescue Win32::API::LoadLibraryError
|
123
123
|
# Do nothing - you must check for their existence
|
124
124
|
end
|
125
125
|
end
|
data/lib/windows/msvcrt/file.rb
CHANGED
@@ -37,7 +37,7 @@ module Windows
|
|
37
37
|
API.new('_mktemp_s', 'PL', 'L', MSVCRT_DLL)
|
38
38
|
API.new('_umask_s', 'IP', 'L', MSVCRT_DLL)
|
39
39
|
API.new('_wmktemp_s', 'PL', 'L', MSVCRT_DLL)
|
40
|
-
rescue
|
40
|
+
rescue Win32::API::LoadLibraryError
|
41
41
|
# Ignore - you must check for it via 'defined?'
|
42
42
|
end
|
43
43
|
end
|
data/lib/windows/msvcrt/io.rb
CHANGED
@@ -63,7 +63,7 @@ module Windows
|
|
63
63
|
API.new('_sopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
64
64
|
API.new('_tmpfile_s', 'P', 'L', MSVCRT_DLL)
|
65
65
|
API.new('_wsopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
66
|
-
rescue
|
66
|
+
rescue Win32::API::LoadLibraryError
|
67
67
|
# Ignore - you must check for it via 'defined?'
|
68
68
|
end
|
69
69
|
end
|
@@ -190,7 +190,7 @@ module Windows
|
|
190
190
|
begin
|
191
191
|
API.new('GetNetScheduleAccountInformation', 'PLP', 'L', 'mstask')
|
192
192
|
API.new('SetNetScheduleAccountInformation', 'PPP', 'L', 'netapi32')
|
193
|
-
rescue
|
193
|
+
rescue Win32::API::LoadLibraryError
|
194
194
|
# Do nothing. Not supported on current platform.
|
195
195
|
end
|
196
196
|
|
@@ -515,7 +515,7 @@ module Windows
|
|
515
515
|
def SetNetScheduleAccountInformation(server, account, password)
|
516
516
|
SetNetScheduleAccountInformation.call(server, account, password) == NERR_Success
|
517
517
|
end
|
518
|
-
rescue
|
518
|
+
rescue Win32::API::LoadLibraryError
|
519
519
|
# Do nothing. It's up to you to check for their existence.
|
520
520
|
end
|
521
521
|
end
|
data/lib/windows/network/snmp.rb
CHANGED
@@ -82,7 +82,7 @@ module Windows
|
|
82
82
|
API.new('SnmpCreateSession', 'LLKP', 'L', 'wsnmp32')
|
83
83
|
API.new('SnmpCleanupEx', 'V', 'I', 'wsnmp32')
|
84
84
|
API.new('SnmpStartupEx', 'PPPPP', 'L', 'wsnmp32')
|
85
|
-
rescue
|
85
|
+
rescue Win32::API::LoadLibraryError
|
86
86
|
# Do nothing. It's up to you to check for their existence.
|
87
87
|
end
|
88
88
|
end
|
@@ -106,7 +106,7 @@ module Windows
|
|
106
106
|
API.new('DisconnectEx', 'LPLL', 'B', 'mswsock')
|
107
107
|
API.new('GetAddrInfoW', 'PPPP', 'I', 'mswsock')
|
108
108
|
API.new('GetNameInfoW', 'PLPLPLI', 'I', 'ws2_32')
|
109
|
-
rescue
|
109
|
+
rescue Win32::API::LoadLibraryError
|
110
110
|
# Do nothing, not supported on your platform.
|
111
111
|
end
|
112
112
|
|
@@ -118,7 +118,7 @@ module Windows
|
|
118
118
|
API.new('WSAConnectByName', 'LPPPPPPP', 'B', 'ws2_32')
|
119
119
|
API.new('WSADeleteSocketPeerTargetName', 'LPPPP', 'I', 'ws2_32')
|
120
120
|
API.new('WSAPoll', 'PLI', 'I', 'ws2_32')
|
121
|
-
rescue
|
121
|
+
rescue Win32::API::LoadLibraryError
|
122
122
|
# Do nothing, not supported on your platform.
|
123
123
|
end
|
124
124
|
end
|
data/lib/windows/nio.rb
CHANGED
@@ -37,12 +37,11 @@ module Windows
|
|
37
37
|
API.new('SetFilePointerEx', 'LLPL', 'B')
|
38
38
|
API.new('WriteFileGather', 'LPLPP', 'B')
|
39
39
|
|
40
|
-
# Windows Vista or later
|
41
40
|
begin
|
42
41
|
API.new('CancelIoEx', 'LP', 'B')
|
43
42
|
API.new('CancelSynchronousIo', 'L', 'B')
|
44
|
-
rescue
|
45
|
-
#
|
43
|
+
rescue Win32::API::LoadLibraryError
|
44
|
+
# Windows Vista or later
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
@@ -56,6 +56,7 @@ module Windows
|
|
56
56
|
|
57
57
|
API.new('NtQueryInformationFile', 'LPPLL', 'L', 'ntdll')
|
58
58
|
API.new('NtQueryObject', 'LLPLP', 'L', 'ntdll')
|
59
|
+
API.new('NtQuerySystemInformation', 'LPLP', 'L', 'ntdll')
|
59
60
|
|
60
61
|
# Should work for Windows XP/2000
|
61
62
|
unless defined? GetFinalPathNameByHandle
|
@@ -65,16 +66,16 @@ module Windows
|
|
65
66
|
|
66
67
|
def GetFinalPathNameByHandle(file)
|
67
68
|
begin
|
68
|
-
|
69
|
+
max_path = 256
|
69
70
|
fh = File.open(file, 'r')
|
70
71
|
handle = get_osfhandle(fh.fileno)
|
71
|
-
object_name_information = 0.chr * (8 + (
|
72
|
+
object_name_information = 0.chr * (8 + (max_path*2))
|
72
73
|
|
73
74
|
status = NtQueryObject(
|
74
75
|
handle,
|
75
76
|
ObjectNameInformation,
|
76
77
|
object_name_information,
|
77
|
-
object_name_information.size
|
78
|
+
object_name_information.size,
|
78
79
|
0
|
79
80
|
)
|
80
81
|
|
data/lib/windows/process.rb
CHANGED
@@ -97,13 +97,11 @@ module Windows
|
|
97
97
|
API.new('WaitForInputIdle', 'LL', 'L', 'user32')
|
98
98
|
API.new('WTSEnumerateProcesses', 'LLLPP', 'B', 'wtsapi32')
|
99
99
|
|
100
|
-
# Windows XP or later
|
101
100
|
begin
|
102
101
|
API.new('GetProcessId', 'L', 'L')
|
103
102
|
API.new('GetProcessHandleCount', 'LP', 'B')
|
104
|
-
rescue
|
105
|
-
#
|
106
|
-
# check for the existence of the constant in your code.
|
103
|
+
rescue Win32::API::LoadLibraryError
|
104
|
+
# Windows XP or later
|
107
105
|
end
|
108
106
|
end
|
109
107
|
end
|
data/lib/windows/registry.rb
CHANGED
@@ -117,12 +117,10 @@ module Windows
|
|
117
117
|
API.new('RegSetValueEx', 'LPLLPL', 'L', 'advapi32')
|
118
118
|
API.new('RegUnLoadKey', 'LP', 'L', 'advapi32')
|
119
119
|
|
120
|
-
# Windows XP or later
|
121
120
|
begin
|
122
121
|
API.new('RegSaveKeyEx', 'LPPL', 'L', 'advapi32')
|
123
|
-
rescue
|
124
|
-
#
|
125
|
-
# check for the existence of the constant in your code.
|
122
|
+
rescue Win32::API::LoadLibraryError
|
123
|
+
# Windows XP or later
|
126
124
|
end
|
127
125
|
end
|
128
126
|
end
|
data/lib/windows/security.rb
CHANGED
@@ -400,18 +400,15 @@ module Windows
|
|
400
400
|
API.new('DeleteAce', 'PL', 'B', 'advapi32')
|
401
401
|
API.new('DuplicateToken', 'LPP', 'B', 'advapi32')
|
402
402
|
API.new('DuplicateTokenEx', 'LLPLLP', 'B', 'advapi32')
|
403
|
-
API.new('EqualDomainSid', 'PPP', 'B', 'advapi32')
|
404
403
|
API.new('EqualPrefixSid', 'PP', 'B', 'advapi32')
|
405
404
|
API.new('EqualSid', 'PP', 'B', 'advapi32')
|
406
405
|
API.new('FindFirstFreeAce', 'PP', 'B', 'advapi32')
|
407
|
-
API.new('FreeInheritedFromArray', 'PIP', 'B', 'advapi32')
|
408
406
|
API.new('FreeSid', 'P', 'L', 'advapi32')
|
409
407
|
API.new('GetAce', 'LLP', 'B', 'advapi32')
|
410
408
|
API.new('GetAclInformation', 'PPLI', 'B', 'advapi32')
|
411
409
|
API.new('GetFileSecurity', 'PLPLP', 'B', 'advapi32')
|
412
410
|
API.new('GetFileSecurityA', 'PLPLP', 'B', 'advapi32')
|
413
411
|
API.new('GetFileSecurityW', 'PLPLP', 'B', 'advapi32')
|
414
|
-
API.new('GetInheritanceSource', 'PLLIPLPPLP', 'L', 'advapi32')
|
415
412
|
API.new('GetLengthSid', 'P', 'L', 'advapi32')
|
416
413
|
API.new('GetSecurityDescriptorControl', 'PPP', 'B', 'advapi32')
|
417
414
|
API.new('GetSecurityDescriptorDacl', 'PPPP', 'B', 'advapi32')
|
@@ -435,7 +432,6 @@ module Windows
|
|
435
432
|
API.new('IsValidAcl', 'P', 'B', 'advapi32')
|
436
433
|
API.new('IsValidSecurityDescriptor', 'P', 'B', 'advapi32')
|
437
434
|
API.new('IsValidSid', 'P', 'B', 'advapi32')
|
438
|
-
API.new('IsWellKnownSid', 'PI', 'B', 'advapi32')
|
439
435
|
API.new('LookupAccountName', 'PPPPPPP', 'B', 'advapi32')
|
440
436
|
API.new('LookupAccountSid', 'PLPPPPP', 'B', 'advapi32')
|
441
437
|
API.new('LookupPrivilegeDisplayName', 'PPPPP', 'B', 'advapi32')
|
@@ -461,7 +457,11 @@ module Windows
|
|
461
457
|
begin
|
462
458
|
API.new('CreateWellKnownSid', 'IPPP', 'B', 'advapi32')
|
463
459
|
API.new('AddMandatoryAce', 'PLLLP', 'B', 'advapi32')
|
464
|
-
|
460
|
+
API.new('EqualDomainSid', 'PPP', 'B', 'advapi32')
|
461
|
+
API.new('FreeInheritedFromArray', 'PIP', 'B', 'advapi32')
|
462
|
+
API.new('GetInheritanceSource', 'PLLIPLPPLP', 'L', 'advapi32')
|
463
|
+
API.new('IsWellKnownSid', 'PI', 'B', 'advapi32')
|
464
|
+
rescue Win32::API::LoadLibraryError
|
465
465
|
# Windows XP or later
|
466
466
|
end
|
467
467
|
|
@@ -470,7 +470,7 @@ module Windows
|
|
470
470
|
API.new('AuditComputeEffectivePolicyByToken', 'LPLP', 'B', 'advapi32')
|
471
471
|
API.new('AuditEnumerateCategories', 'PP', 'B', 'advapi32')
|
472
472
|
API.new('AuditEnumeratePerUserPolicy', 'P', 'B', 'advapi32')
|
473
|
-
rescue
|
473
|
+
rescue Win32::API::LoadLibraryError
|
474
474
|
# Windows Vista or later
|
475
475
|
end
|
476
476
|
end
|
data/lib/windows/shell.rb
CHANGED
@@ -158,13 +158,12 @@ module Windows
|
|
158
158
|
API.new('SHGetSpecialFolderLocation', 'LIP', 'L', 'shell32')
|
159
159
|
API.new('SHGetSpecialFolderPath', 'LPLL','L', 'shell32')
|
160
160
|
|
161
|
-
# Windows Vista
|
162
161
|
begin
|
163
162
|
API.new('SHGetKnownFolderPath', 'LLLP', 'L', 'shell32')
|
164
163
|
API.new('SHGetKnownFolderIDList', 'LLLP', 'L', 'shell32')
|
165
164
|
API.new('SHGetNameFromIDList', 'PLP', 'L', 'shell32')
|
166
|
-
rescue
|
167
|
-
#
|
165
|
+
rescue Win32::API::LoadLibraryError
|
166
|
+
# Windows Vista or later
|
168
167
|
end
|
169
168
|
end
|
170
169
|
end
|
data/lib/windows/system_info.rb
CHANGED
@@ -80,11 +80,10 @@ module Windows
|
|
80
80
|
API.new('GetVersionEx', 'P', 'B')
|
81
81
|
API.new('GetWindowsDirectory', 'PI', 'I')
|
82
82
|
|
83
|
-
# XP or later
|
84
83
|
begin
|
85
84
|
API.new('GetSystemWow64Directory', 'PI', 'I')
|
86
|
-
rescue
|
87
|
-
#
|
85
|
+
rescue Win32::API::LoadLibraryError
|
86
|
+
# XP or later
|
88
87
|
end
|
89
88
|
|
90
89
|
# These macros are from windef.h, but I've put them here for now
|
data/lib/windows/thread.rb
CHANGED
@@ -52,12 +52,11 @@ module Windows
|
|
52
52
|
API.new('TlsGetValue', 'L', 'L')
|
53
53
|
API.new('TlsSetValue', 'LL', 'B')
|
54
54
|
|
55
|
-
# Windows XP or later
|
56
55
|
begin
|
57
56
|
API.new('AttachThreadInput', 'LLI', 'B')
|
58
57
|
API.new('GetThreadIOPendingFlag', 'LP', 'B')
|
59
|
-
rescue
|
60
|
-
#
|
58
|
+
rescue Win32::API::LoadLibraryError
|
59
|
+
# Windows XP or later
|
61
60
|
end
|
62
61
|
end
|
63
62
|
end
|
data/lib/windows/time.rb
CHANGED
@@ -36,12 +36,11 @@ module Windows
|
|
36
36
|
API.new('SystemTimeToFileTime', 'PP', 'B')
|
37
37
|
API.new('SystemTimeToTzSpecificLocalTime', 'PPP', 'B')
|
38
38
|
|
39
|
-
# Windows XP or later
|
40
39
|
begin
|
41
40
|
API.new('GetSystemTimes', 'PPP', 'B')
|
42
41
|
API.new('TzSpecificLocalTimeToSystemTime', 'PPP', 'B')
|
43
|
-
rescue
|
44
|
-
#
|
42
|
+
rescue Win32::API::LoadLibraryError
|
43
|
+
# Windows XP or later
|
45
44
|
end
|
46
45
|
end
|
47
46
|
end
|
data/lib/windows/volume.rb
CHANGED
@@ -33,18 +33,16 @@ module Windows
|
|
33
33
|
API.new('SetVolumeLabel', 'SS', 'B')
|
34
34
|
API.new('SetVolumeMountPoint', 'SS', 'B')
|
35
35
|
|
36
|
-
# Windows XP or later
|
37
36
|
begin
|
38
37
|
API.new('GetVolumePathNamesForVolumeName', 'SPLL', 'B')
|
39
|
-
rescue
|
40
|
-
#
|
38
|
+
rescue Win32::API::LoadLibraryError
|
39
|
+
# Windows XP or later
|
41
40
|
end
|
42
41
|
|
43
|
-
# Windows Vista or later
|
44
42
|
begin
|
45
43
|
API.new('GetVolumeInformationByHandleW', 'LPLPPPPL', 'B')
|
46
|
-
rescue
|
47
|
-
#
|
44
|
+
rescue Win32::API::LoadLibraryError
|
45
|
+
# Windows Vista or later
|
48
46
|
end
|
49
47
|
end
|
50
48
|
end
|
data/lib/windows/window.rb
CHANGED
@@ -50,12 +50,10 @@ module Windows
|
|
50
50
|
API.new('GetWindowTextLength', 'L', 'I', 'user32')
|
51
51
|
API.new('GetWindowThreadProcessId', 'LP', 'L', 'user32')
|
52
52
|
|
53
|
-
# Windows XP or later
|
54
53
|
begin
|
55
54
|
API.new('GetLayeredWindowAttributes', 'LPBL', 'B', 'user32')
|
56
|
-
rescue
|
57
|
-
#
|
58
|
-
# to check for the existence of the constant in your code.
|
55
|
+
rescue Win32::API::LoadLibraryError
|
56
|
+
# Windows XP or later
|
59
57
|
end
|
60
58
|
end
|
61
59
|
end
|
data/test/tc_msvcrt_directory.rb
CHANGED
@@ -81,7 +81,8 @@ class TC_Windows_MSVCRT_Directory < Test::Unit::TestCase
|
|
81
81
|
def test_searchenv
|
82
82
|
possible = [
|
83
83
|
"c:\\winnt\\system32\\notepad.exe",
|
84
|
-
"c:\\windows\\system32\\notepad.exe"
|
84
|
+
"c:\\windows\\system32\\notepad.exe",
|
85
|
+
"c:\\windows\\notepad.exe"
|
85
86
|
]
|
86
87
|
assert_respond_to(self, :searchenv)
|
87
88
|
assert_nothing_raised{ searchenv("notepad.exe", "PATH", @buf) }
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#####################################################################
|
2
|
+
# test_ntfs_winternl.rb
|
3
|
+
#
|
4
|
+
# Test case for the Windows::NTFS::Winternl module.
|
5
|
+
#####################################################################
|
6
|
+
require "windows/ntfs/winternl"
|
7
|
+
require "test/unit"
|
8
|
+
|
9
|
+
class WinternlFoo
|
10
|
+
include Windows::NTFS::Winternl
|
11
|
+
end
|
12
|
+
|
13
|
+
class TC_Windows_NTFS_Winternl < Test::Unit::TestCase
|
14
|
+
def setup
|
15
|
+
@foo = WinternlFoo.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_numeric_constants
|
19
|
+
assert_equal(8, WinternlFoo::FileAccessInformation)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_method_constants
|
23
|
+
assert_not_nil(WinternlFoo::NtQueryInformationFile)
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
@foo = nil
|
28
|
+
end
|
29
|
+
end
|
data/windows-pr.gemspec
CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
|
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |gem|
|
4
4
|
gem.name = 'windows-pr'
|
5
|
-
gem.version = '0.9.
|
5
|
+
gem.version = '0.9.9'
|
6
6
|
gem.authors = ['Daniel J. Berger', 'Park Heesob']
|
7
7
|
gem.email = 'djberg96@gmail.com'
|
8
8
|
gem.homepage = 'http://www.rubyforge.org/projects/win32utils'
|
@@ -17,8 +17,8 @@ spec = Gem::Specification.new do |gem|
|
|
17
17
|
gem.files.reject! { |fn| fn.include? "CVS" }
|
18
18
|
gem.require_path = "lib"
|
19
19
|
gem.extra_rdoc_files = ['MANIFEST', 'README', 'CHANGES']
|
20
|
-
gem.add_dependency('windows-api', '>= 0.
|
21
|
-
gem.add_dependency('win32-api', '>= 1.
|
20
|
+
gem.add_dependency('windows-api', '>= 0.3.0')
|
21
|
+
gem.add_dependency('win32-api', '>= 1.3.0')
|
22
22
|
end
|
23
23
|
|
24
24
|
if $0 == __FILE__
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: windows-pr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2009-02-01 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.
|
24
|
+
version: 0.3.0
|
25
25
|
version:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: win32-api
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: 1.3.0
|
35
35
|
version:
|
36
36
|
description: Windows functions and constants bundled via Win32::API
|
37
37
|
email: djberg96@gmail.com
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- test/tc_network_management.rb
|
122
122
|
- test/tc_network_snmp.rb
|
123
123
|
- test/tc_nio.rb
|
124
|
+
- test/tc_ntfs_winternl.rb
|
124
125
|
- test/tc_path.rb
|
125
126
|
- test/tc_pipe.rb
|
126
127
|
- test/tc_process.rb
|
@@ -197,6 +198,7 @@ test_files:
|
|
197
198
|
- test/tc_network_management.rb
|
198
199
|
- test/tc_network_snmp.rb
|
199
200
|
- test/tc_nio.rb
|
201
|
+
- test/tc_ntfs_winternl.rb
|
200
202
|
- test/tc_path.rb
|
201
203
|
- test/tc_pipe.rb
|
202
204
|
- test/tc_process.rb
|