windows-pr 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,12 @@
1
+ = 0.7.2 - 15-Oct-2007
2
+ * Added the Windows::MSVCRT::Time module.
3
+ * Added the Windows::MSVCRT::Directory module.
4
+ * Added some SID related security constants to the Windows::Security module.
5
+ * Added more constants and the HasOverlappedIoCompleted macro to the
6
+ Windows::Synchronize module.
7
+ * Added some 'find' methods to the Windows::File module.
8
+ * Some prototype fixes for the 'Virtual' functions in Windows::Memory.
9
+
1
10
  = 0.7.1 - 21-Sep-2007
2
11
  * Added USN (changejournal) macros to Windows::DeviceIO.
3
12
  * Added the Heap functions to Windows::Memory.
data/MANIFEST CHANGED
@@ -42,6 +42,8 @@ lib/windows/gdi/device_context.rb
42
42
  lib/windows/gdi/painting_drawing.rb
43
43
 
44
44
  lib/windows/msvcrt/buffer.rb
45
+ lib/windows/msvcrt/directory.rb
45
46
  lib/windows/msvcrt/file.rb
46
47
  lib/windows/msvcrt/io.rb
47
- lib/windows/msvcrt/string.rb
48
+ lib/windows/msvcrt/string.rb
49
+ lib/windows/msvcrt/time.rb
@@ -13,6 +13,7 @@ LPTSTR => 'P'
13
13
  UINT => 'I'
14
14
  VOID => 'V'
15
15
  WORD => 'I'
16
+ LPVOID => 'L' (or 'P')
16
17
 
17
18
  = C Data Types
18
19
  void => 'V'
@@ -22,4 +23,7 @@ const char* => 'L'
22
23
  int => 'I'
23
24
  long => 'L'
24
25
  struct => 'P'
25
- struct* => 'P'
26
+ struct* => 'P'
27
+
28
+ In practice most LPVOID types should be designated as 'L' because this
29
+ usually means the function is looking for an address.
@@ -204,6 +204,10 @@ module Windows
204
204
  ERROR_TOO_MANY_MODULES = 214
205
205
  ERROR_NESTING_NOT_ALLOWED = 215
206
206
  ERROR_MORE_DATA = 234
207
+
208
+ ERROR_OPERATION_ABORTED = 995
209
+ ERROR_IO_INCOMPLETE = 996
210
+ ERROR_IO_PENDING = 997
207
211
 
208
212
  ERROR_USER_DEFINED_BASE = 0xF000
209
213
 
@@ -10,6 +10,10 @@ module Windows
10
10
  API.auto_method = true
11
11
  API.auto_unicode = true
12
12
 
13
+ FILE_BEGIN = 0
14
+ FILE_CURRENT = 1
15
+ FILE_END = 2
16
+
13
17
  # File Attributes
14
18
  FILE_ATTRIBUTE_READONLY = 0x00000001
15
19
  FILE_ATTRIBUTE_HIDDEN = 0x00000002
@@ -173,21 +177,32 @@ module Windows
173
177
  SECTION_EXTEND_SIZE
174
178
 
175
179
  # Errors
176
- INVALID_FILE_ATTRIBUTES = -1
177
- INVALID_HANDLE_VALUE = -1
178
- INVALID_FILE_SIZE = 0xFFFFFFFF
180
+ INVALID_FILE_ATTRIBUTES = -1
181
+ INVALID_HANDLE_VALUE = -1
182
+ INVALID_SET_FILE_POINTER = -1
183
+ INVALID_FILE_SIZE = 0xFFFFFFFF
179
184
 
180
185
  # Misc
181
- LOCKFILE_EXCLUSIVE_LOCK = 0x00000001
182
- LOCKFILE_FAIL_IMMEDIATELY = 0x00000002
186
+ LOCKFILE_EXCLUSIVE_LOCK = 0x00000001
187
+ LOCKFILE_FAIL_IMMEDIATELY = 0x00000002
188
+ MOVEFILE_REPLACE_EXISTING = 0x00000001
189
+ MOVEFILE_COPY_ALLOWED = 0x00000002
190
+ MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004
191
+ MOVEFILE_WRITE_THROUGH = 0x00000008
192
+ MOVEFILE_CREATE_HARDLINK = 0x00000010
193
+ MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000020
183
194
 
184
195
  API.new('CopyFile', 'PPI', 'B')
185
- API.new('CopyFileEx', 'PPPPPL', 'B')
196
+ API.new('CopyFileEx', 'PPKPPL', 'B')
186
197
  API.new('CreateFile', 'PLLPLLL', 'L')
187
198
  API.new('CreateHardLink', 'PPP', 'B')
188
199
  API.new('DecryptFile', 'PL', 'B', 'advapi32')
189
200
  API.new('DeleteFile', 'P', 'B')
190
201
  API.new('EncryptFile', 'P', 'B', 'advapi32')
202
+ API.new('FindClose', 'L', 'B')
203
+ API.new('FindFirstFile', 'PP', 'L')
204
+ API.new('FindFirstFileEx', 'PIPIII', 'L')
205
+ API.new('FindNextFile', 'LP', 'B')
191
206
  API.new('GetBinaryType', 'PP', 'B')
192
207
  API.new('GetFileAttributes', 'P', 'L')
193
208
  API.new('GetFileAttributesEx', 'PPP', 'I')
@@ -199,12 +214,17 @@ module Windows
199
214
  API.new('GetShortPathName', 'PPL', 'L')
200
215
  API.new('LockFile', 'LLLLL', 'B')
201
216
  API.new('LockFileEx', 'LLLLLL', 'B')
217
+ API.new('MoveFile', 'PP', 'B')
218
+ API.new('MoveFileEx', 'PPL', 'B')
202
219
  API.new('ReadFile', 'LPLPP', 'B')
203
- API.new('ReadFileEx', 'LPLPP', 'B')
220
+ API.new('ReadFileEx', 'LPLPK', 'B')
221
+ API.new('SetEndOfFile', 'L', 'B')
204
222
  API.new('SetFileAttributes', 'PL', 'B')
223
+ API.new('SetFilePointer', 'LLPL', 'L')
224
+ API.new('SetFilePointerEx', 'LLPL', 'B')
205
225
  API.new('UnlockFile', 'LLLLL', 'B')
206
226
  API.new('UnlockFileEx', 'LLLLL', 'B')
207
227
  API.new('WriteFile', 'LPLPP', 'B')
208
- API.new('WriteFileEx', 'LPLPP', 'B')
228
+ API.new('WriteFileEx', 'LPLPK', 'B')
209
229
  end
210
230
  end
@@ -13,24 +13,6 @@ module Windows
13
13
  FILE_MAP_READ = 0x0004
14
14
  FILE_MAP_ALL_ACCESS = 983071
15
15
 
16
- PAGE_NOACCESS = 0x01
17
- PAGE_READONLY = 0x02
18
- PAGE_READWRITE = 0x04
19
- PAGE_WRITECOPY = 0x08
20
- PAGE_EXECUTE = 0x10
21
- PAGE_EXECUTE_READ = 0x20
22
- PAGE_EXECUTE_READWRITE = 0x40
23
- PAGE_EXECUTE_WRITECOPY = 0x80
24
- PAGE_GUARD = 0x100
25
- PAGE_NOCACHE = 0x200
26
- PAGE_WRITECOMBINE = 0x400
27
- SEC_FILE = 0x800000
28
- SEC_IMAGE = 0x1000000
29
- SEC_VLM = 0x2000000
30
- SEC_RESERVE = 0x4000000
31
- SEC_COMMIT = 0x8000000
32
- SEC_NOCACHE = 0x10000000
33
-
34
16
  API.new('CreateFileMapping', 'LPLLLP', 'L')
35
17
  API.new('FlushViewOfFile', 'PL', 'B')
36
18
  API.new('MapViewOfFile', 'LLLLL', 'L')
@@ -22,11 +22,36 @@ module Windows
22
22
 
23
23
  MEM_COMMIT = 0x1000
24
24
  MEM_RESERVE = 0x2000
25
+ MEM_DECOMMIT = 0x4000
26
+ MEM_RELEASE = 0x8000
27
+ MEM_FREE = 0x10000
28
+ MEM_PRIVATE = 0x20000
29
+ MEM_MAPPED = 0x40000
25
30
  MEM_RESET = 0x80000
26
- MEM_LARGE_PAGES = 0x20000000
27
- MEM_PHYSICAL = 0x400000
28
31
  MEM_TOP_DOWN = 0x100000
29
32
  MEM_WRITE_WATCH = 0x200000
33
+ MEM_PHYSICAL = 0x400000
34
+ MEM_LARGE_PAGES = 0x20000000
35
+ MEM_4MB_PAGES = 0x80000000200000
36
+
37
+ PAGE_NOACCESS = 0x01
38
+ PAGE_READONLY = 0x02
39
+ PAGE_READWRITE = 0x04
40
+ PAGE_WRITECOPY = 0x08
41
+ PAGE_EXECUTE = 0x10
42
+ PAGE_EXECUTE_READ = 0x20
43
+ PAGE_EXECUTE_READWRITE = 0x40
44
+ PAGE_EXECUTE_WRITECOPY = 0x80
45
+ PAGE_GUARD = 0x100
46
+ PAGE_NOCACHE = 0x200
47
+ PAGE_WRITECOMBINE = 0x400
48
+
49
+ SEC_FILE = 0x800000
50
+ SEC_IMAGE = 0x1000000
51
+ SEC_VLM = 0x2000000
52
+ SEC_RESERVE = 0x4000000
53
+ SEC_COMMIT = 0x8000000
54
+ SEC_NOCACHE = 0x10000000
30
55
 
31
56
  API.new('GlobalAlloc', 'II', 'I')
32
57
  API.new('GlobalFlags', 'I', 'I')
@@ -53,16 +78,16 @@ module Windows
53
78
  API.new('HeapValidate', 'LLL', 'B')
54
79
  API.new('HeapWalk', 'LP', 'B')
55
80
 
56
- API.new('VirtualAlloc', 'LLLL', 'P')
57
- API.new('VirtualAllocEx', 'LLLLL', 'P')
81
+ API.new('VirtualAlloc', 'LLLL', 'L')
82
+ API.new('VirtualAllocEx', 'LLLLL', 'L')
58
83
  API.new('VirtualFree', 'LLL', 'B')
59
84
  API.new('VirtualFreeEx', 'LLLL', 'B')
60
- API.new('VirtualLock', 'PL', 'B')
61
- API.new('VirtualProtect', 'PLLP', 'B')
62
- API.new('VirtualProtectEx', 'LPLLP', 'B')
85
+ API.new('VirtualLock', 'LL', 'B')
86
+ API.new('VirtualProtect', 'LLLP', 'B')
87
+ API.new('VirtualProtectEx', 'LLLLP', 'B')
63
88
  API.new('VirtualQuery', 'LPL', 'L')
64
89
  API.new('VirtualQueryEx', 'LLPL', 'L')
65
- API.new('VirtualUnlock', 'PL', 'B')
90
+ API.new('VirtualUnlock', 'LL', 'B')
66
91
  API.new('RtlZeroMemory', 'PL', 'L')
67
92
 
68
93
  # Windows XP or later
@@ -0,0 +1,93 @@
1
+ require 'windows/api'
2
+ include Windows
3
+
4
+ module Windows
5
+ module MSVCRT
6
+ module Directory
7
+ API.auto_method = false
8
+ API.auto_constant = false
9
+ API.auto_unicode = false
10
+
11
+ Chdir = API.new('_chdir', 'P', 'I', 'msvcrt')
12
+ Wchdir = API.new('_wchdir', 'P', 'I', 'msvcrt')
13
+ Chdrive = API.new('_chdrive', 'I', 'I', 'msvcrt')
14
+ Getcwd = API.new('_getcwd', 'PI', 'P', 'msvcrt')
15
+ Wgetcwd = API.new('_wgetcwd', 'PI', 'P', 'msvcrt')
16
+ Getdcwd = API.new('_getdcwd', 'IPI', 'P', 'msvcrt')
17
+ Wgetdcwd = API.new('_wgetdcwd', 'IPI', 'P', 'msvcrt')
18
+ Getdiskfree = API.new('_getdiskfree', 'IP', 'I', 'msvcrt')
19
+ Getdrive = API.new('_getdrive', 'V', 'I', 'msvcrt')
20
+ Getdrives = API.new('_getdrives', 'V', 'L', 'msvcrt')
21
+ Mkdir = API.new('_mkdir', 'P', 'I', 'msvcrt')
22
+ Wmkdir = API.new('_wmkdir', 'P', 'I', 'msvcrt')
23
+ Rmdir = API.new('_rmdir', 'P', 'I', 'msvcrt')
24
+ Wrmdir = API.new('_wrmdir', 'P', 'I', 'msvcrt')
25
+ Searchenv = API.new('_searchenv', 'PPP', 'V', 'msvcrt')
26
+ Wsearchenv = API.new('_wsearchenv', 'PPP', 'V', 'msvcrt')
27
+
28
+ def chdir(dirname)
29
+ Chdir.call(dirname)
30
+ end
31
+
32
+ def wchdir(dirname)
33
+ Wchdir.call(dirname)
34
+ end
35
+
36
+ def chdrive(drive_number)
37
+ Chdrive.call(drive_number)
38
+ end
39
+
40
+ def getcwd(buffer, maxlen)
41
+ Getcwd.call(buffer, maxlen)
42
+ end
43
+
44
+ def wgetcwd(buffer, maxlen)
45
+ Wgetcwd.call(buffer, maxlen)
46
+ end
47
+
48
+ def getdcwd(drive, buffer, maxlen)
49
+ Getdcwd.call(drive, buffer, maxlen)
50
+ end
51
+
52
+ def wgetdcwd(drive, buffer, maxlen)
53
+ Wgetdcwd.call(drive, buffer, maxlen)
54
+ end
55
+
56
+ def getdiskfree(drive, struct_ptr)
57
+ Getdiskfree.call(drive, struct_ptr)
58
+ end
59
+
60
+ def getdrive
61
+ Getdrive.call
62
+ end
63
+
64
+ def getdrives
65
+ Getdrives.call
66
+ end
67
+
68
+ def mkdir(dirname)
69
+ Mkdir.call(dirname)
70
+ end
71
+
72
+ def wmkdir(dirname)
73
+ Wmkdir.call(dirname)
74
+ end
75
+
76
+ def rmdir(dirname)
77
+ Rmdir.call(dirname)
78
+ end
79
+
80
+ def wrmdir(dirname)
81
+ Wrmdir.call(dirname)
82
+ end
83
+
84
+ def searchenv(filename, varname, pathname)
85
+ Searchenv.call(filename, varname, pathname)
86
+ end
87
+
88
+ def wsearchenv(filename, varname, pathname)
89
+ Wsearchenv.call(filename, varname, pathname)
90
+ end
91
+ end
92
+ end
93
+ end
@@ -17,20 +17,36 @@ module Windows
17
17
  S_IWRITE = 0000200 # write permission, owner
18
18
  S_IEXEC = 0000100 # execute/search permission, owner
19
19
 
20
+ Chmod = API.new('_chmod', 'PI', 'I', 'msvcrt')
21
+ Chsize = API.new('_chsize', 'IL', 'I', 'msvcrt')
20
22
  Mktemp = API.new('_mktemp', 'P', 'P', 'msvcrt')
21
23
  Stat = API.new('_stat', 'PP', 'I', 'msvcrt')
22
24
  Stat64 = API.new('_stat64', 'PP', 'I', 'msvcrt')
25
+ Wchmod = API.new('_wchmod', 'PI', 'I', 'msvcrt')
23
26
  Wmktemp = API.new('_wmktemp', 'P', 'P', 'msvcrt')
24
27
  Wstat = API.new('_wstat', 'PP', 'I', 'msvcrt')
25
28
  Wstat64 = API.new('_wstat64', 'PP', 'I', 'msvcrt')
26
29
 
27
30
  # VC++ 8.0 or later
28
31
  begin
32
+ Chsize_s = API.new('_chsize_s', 'IL', 'I', 'msvcrt')
29
33
  Mktemp_s = API.new('_mktemp_s', 'PL', 'L', 'msvcrt')
30
34
  Wmktemp_s = API.new('_wmktemp_s', 'PL', 'L', 'msvcrt')
31
35
  rescue RuntimeError
32
36
  # Ignore - you must check for it via 'defined?'
33
37
  end
38
+
39
+ def chmod(file, mode)
40
+ Chmod.call(file, mode)
41
+ end
42
+
43
+ def chsize(fd, size)
44
+ Chsize.call(fd, size)
45
+ end
46
+
47
+ def chsize_s(fd, size)
48
+ Chsize_s.call(fd, size)
49
+ end
34
50
 
35
51
  def mktemp(template)
36
52
  Mktemp.call(template)
@@ -47,6 +63,10 @@ module Windows
47
63
  def stat64(path, buffer)
48
64
  Stat64.call(path, buffer)
49
65
  end
66
+
67
+ def wchmod(file, mode)
68
+ Wchmod.call(file, mode)
69
+ end
50
70
 
51
71
  def wmktemp(template)
52
72
  Wmktemp.call(template)
@@ -0,0 +1,168 @@
1
+ require 'windows/api'
2
+ include Windows
3
+
4
+ module Windows
5
+ module MSVCRT
6
+ module Time
7
+ API.auto_constant = false
8
+ API.auto_method = false
9
+ API.auto_unicode = false
10
+
11
+ Asctime = API.new('asctime', 'P', 'P', 'msvcrt')
12
+ Clock = API.new('clock', 'V', 'L', 'msvcrt')
13
+ Ctime = API.new('ctime', 'P', 'P', 'msvcrt')
14
+ Ctime64 = API.new('_ctime64', 'P', 'P', 'msvcrt')
15
+ Difftime = API.new('difftime', 'LL', 'L', 'msvcrt')
16
+ Ftime = API.new('_ftime', 'P', 'L', 'msvcrt')
17
+ Ftime64 = API.new('_ftime64', 'P', 'L', 'msvcrt')
18
+ Futime = API.new('_futime', 'IP', 'I', 'msvcrt')
19
+ Futime64 = API.new('_futime64', 'IP', 'I', 'msvcrt')
20
+ Gmtime = API.new('gmtime', 'P', 'P', 'msvcrt')
21
+ Gmtime64 = API.new('_gmtime64', 'P', 'P', 'msvcrt')
22
+ Localtime = API.new('localtime', 'P', 'P', 'msvcrt')
23
+ Localtime64 = API.new('_localtime64', 'P', 'P', 'msvcrt')
24
+ Mktime = API.new('mktime', 'P', 'L', 'msvcrt')
25
+ Mktime64 = API.new('_mktime64', 'P', 'L', 'msvcrt')
26
+ Strdate = API.new('_strdate', 'P', 'P', 'msvcrt')
27
+ Strftime = API.new('strftime', 'PLPP', 'L', 'msvcrt')
28
+ Strtime = API.new('_strtime', 'P', 'P', 'msvcrt')
29
+ WinTime = API.new('time', 'P', 'L', 'msvcrt') # Avoid conflict
30
+ WinTime64 = API.new('_time64', 'P', 'L', 'msvcrt') # Avoid conflict
31
+ Tzset = API.new('_tzset', 'V', 'V', 'msvcrt')
32
+ Utime = API.new('_utime', 'PP', 'I', 'msvcrt')
33
+ Utime64 = API.new('_utime64', 'PP', 'I', 'msvcrt')
34
+ Wasctime = API.new('_wasctime', 'P', 'P', 'msvcrt')
35
+ Wctime = API.new('_wctime', 'P', 'P', 'msvcrt')
36
+ Wctime64 = API.new('_wctime64', 'P', 'P', 'msvcrt')
37
+ Wstrdate = API.new('_wstrdate', 'P', 'L', 'msvcrt')
38
+ Wcsftime = API.new('wcsftime', 'PLPP', 'L', 'msvcrt')
39
+ Wstrtime = API.new('_wstrtime', 'P', 'P', 'msvcrt')
40
+ Wutime = API.new('_wutime', 'PP', 'I', 'msvcrt')
41
+ Wutime64 = API.new('_wutime64', 'PP', 'I', 'msvcrt')
42
+
43
+ def asctime(timeptr)
44
+ Asctime.call(timeptr)
45
+ end
46
+
47
+ def clock
48
+ Clock.call
49
+ end
50
+
51
+ def ctime(timer)
52
+ Ctime.call(timer)
53
+ end
54
+
55
+ def ctime64(timer)
56
+ Ctime64.call(timer)
57
+ end
58
+
59
+ def difftime(timer1, timer0)
60
+ Difftime.call(timer1, timer0)
61
+ end
62
+
63
+ def ftime(timeptr)
64
+ Ftime.call(timeptr)
65
+ end
66
+
67
+ def ftime64(timeptr)
68
+ Ftime64.call(timeptr)
69
+ end
70
+
71
+ def futime(fd, filetime)
72
+ Futime.call(fd, filetime)
73
+ end
74
+
75
+ def futime64(fd, filetime)
76
+ Futime64.call(fd, filetime)
77
+ end
78
+
79
+ def gmtime(timer)
80
+ Gmtime.call(timer)
81
+ end
82
+
83
+ def gmtime64(timer)
84
+ Gmtime64.call(timer)
85
+ end
86
+
87
+ def localtime(timer)
88
+ Localtime.call(timer)
89
+ end
90
+
91
+ def localtime64(timer)
92
+ Localtime64.call(timer)
93
+ end
94
+
95
+ def mktime(timeptr)
96
+ Mktime.call(timeptr)
97
+ end
98
+
99
+ def mktime64(timeptr)
100
+ Mktime64.call(timeptr)
101
+ end
102
+
103
+ def strdate(datestr)
104
+ Strdate.call(datestr)
105
+ end
106
+
107
+ def strftime(dest, maxsize, format, timeptr)
108
+ Strftime.call(dest, maxsize, format, timeptr)
109
+ end
110
+
111
+ def strtime(timestr)
112
+ Strtime.call(timestr)
113
+ end
114
+
115
+ def time(timer)
116
+ WinTime.call(timer)
117
+ end
118
+
119
+ def time64(timer)
120
+ WinTime64.call(timer)
121
+ end
122
+
123
+ def tzset
124
+ Tzset.call
125
+ end
126
+
127
+ def utime(filename, times)
128
+ Utime.call(filename, times)
129
+ end
130
+
131
+ def utime64(filename, times)
132
+ Utime64.call(filename, times)
133
+ end
134
+
135
+ def wasctime(timeptr)
136
+ Wasctime.call(timeptr)
137
+ end
138
+
139
+ def wcsftime(dest, maxsize, format, timeptr)
140
+ Wcsftime.call(dest, maxsize, format, timeptr)
141
+ end
142
+
143
+ def wctime(timer)
144
+ Wctime.call(timer)
145
+ end
146
+
147
+ def wctime64(timer)
148
+ Wctime64.call(timer)
149
+ end
150
+
151
+ def wstrdate(datestr)
152
+ Wstrdate.call(datestr)
153
+ end
154
+
155
+ def wstrtime(timestr)
156
+ Wstrtime.call(timestr)
157
+ end
158
+
159
+ def wutime(filename, times)
160
+ Wutime.call(filename, times)
161
+ end
162
+
163
+ def wutime64(filename, times)
164
+ Wutime64.call(filename, times)
165
+ end
166
+ end
167
+ end
168
+ end
@@ -32,14 +32,10 @@ module Windows
32
32
  API.new('GetQueuedCompletionStatus', 'LPPPL', 'B')
33
33
  API.new('OpenFile', 'PPI', 'L')
34
34
  API.new('PostQueuedCompletionStatus', 'LLPP', 'B')
35
- API.new('ReadFile', 'LPLPP', 'B')
36
- API.new('ReadFileEx', 'LPLPP', 'B')
37
35
  API.new('ReadFileScatter', 'LPLPP', 'B')
38
36
  API.new('SetEndOfFile', 'L', 'B')
39
37
  API.new('SetFilePointer', 'LLPL', 'L')
40
38
  API.new('SetFilePointerEx', 'LLPL', 'L')
41
- API.new('WriteFile', 'LPLPP', 'B')
42
- API.new('WriteFileEx', 'LPLPP', 'B')
43
39
  API.new('WriteFileGather', 'LPLPP', 'B')
44
40
  end
45
41
  end
@@ -18,6 +18,14 @@ module Windows
18
18
  SECURITY_DESCRIPTOR_MIN_LENGTH = 20
19
19
  SECURITY_DESCRIPTOR_REVISION = 1
20
20
 
21
+ SECURITY_NULL_SID_AUTHORITY = 0
22
+ SECURITY_WORLD_SID_AUTHORITY = 1
23
+ SECURITY_LOCAL_SID_AUTHORITY = 2
24
+ SECURITY_CREATOR_SID_AUTHORITY = 3
25
+ SECURITY_NON_UNIQUE_AUTHORITY = 4
26
+ SECURITY_NT_AUTHORITY = 5
27
+ SECURITY_RESOURCE_MANAGER_AUTHORITY = 9
28
+
21
29
  GENERIC_RIGHTS_MASK = 4026597376
22
30
  GENERIC_RIGHTS_CHK = 4026531840
23
31
  REST_RIGHTS_MASK = 2097151
@@ -14,6 +14,12 @@ module Windows
14
14
  WAIT_ABANDONED = 128
15
15
  WAIT_FAILED = 0xFFFFFFFF
16
16
 
17
+ STATUS_WAIT_0 = 0
18
+ STATUS_ABANDONED_WAIT_0 = 128
19
+ STATUS_USER_APC = 192
20
+ STATUS_TIMEOUT = 258
21
+ STATUS_PENDING = 259
22
+
17
23
  # Wake mask constants
18
24
  QS_ALLEVENTS = 0x04BF
19
25
  QS_ALLINPUT = 0x04FF
@@ -60,5 +66,10 @@ module Windows
60
66
  API.new('WaitForMultipleObjectsEx', 'LPILI', 'L')
61
67
  API.new('WaitForSingleObject', 'LL', 'L')
62
68
  API.new('WaitForSingleObjectEx', 'LLI', 'L')
69
+
70
+ # Macros
71
+ def HasOverlappedIoCompleted(overlapped)
72
+ overlapped[0,4].unpack('L')[0] != STATUS_PENDING
73
+ end
63
74
  end
64
75
  end
@@ -36,11 +36,11 @@ module Windows
36
36
  API.new('SetSystemTimeAdjustment', 'LI', 'B')
37
37
  API.new('SystemTimeToFileTime', 'PP', 'B')
38
38
  API.new('SystemTimeToTzSpecificLocalTime', 'PPP', 'B')
39
- API.new('TzSpecificLocalTimeToSystemTime', 'PPP', 'B')
40
39
 
41
40
  # Windows XP or later
42
41
  begin
43
42
  API.new('GetSystemTimes', 'PPP', 'B')
43
+ API.new('TzSpecificLocalTimeToSystemTime', 'PPP', 'B')
44
44
  rescue RuntimeError
45
45
  # Do nothing. It's up to you to check your platform.
46
46
  end
@@ -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.7.1"
5
+ gem.version = "0.7.2"
6
6
  gem.author = "Daniel J. Berger"
7
7
  gem.email = "djberg96@gmail.com"
8
8
  gem.homepage = "http://www.rubyforge.org/projects/win32utils"
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
2
+ rubygems_version: 0.9.4.5
3
+ specification_version: 2
4
4
  name: windows-pr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.1
7
- date: 2007-09-21 00:00:00 -06:00
6
+ version: 0.7.2
7
+ date: 2007-10-15 00:00:00 -06:00
8
8
  summary: Windows functions and constants bundled via Win32::API
9
9
  require_paths:
10
10
  - lib
@@ -16,15 +16,22 @@ autorequire:
16
16
  default_executable:
17
17
  bindir: bin
18
18
  has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
19
+ required_ruby_version: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">"
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.0.0
23
+ version: "0"
24
+ version:
25
+ required_rubygems_version: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: "0"
24
30
  version:
25
31
  platform: ruby
26
32
  signing_key:
27
- cert_chain:
33
+ cert_chain: []
34
+
28
35
  post_install_message:
29
36
  authors:
30
37
  - Daniel J. Berger
@@ -82,9 +89,11 @@ files:
82
89
  - test/tc_volume.rb
83
90
  - test/tc_window.rb
84
91
  - lib/windows/msvcrt/buffer.rb
92
+ - lib/windows/msvcrt/directory.rb
85
93
  - lib/windows/msvcrt/file.rb
86
94
  - lib/windows/msvcrt/io.rb
87
95
  - lib/windows/msvcrt/string.rb
96
+ - lib/windows/msvcrt/time.rb
88
97
  - lib/windows/gdi/bitmap.rb
89
98
  - lib/windows/gdi/device_context.rb
90
99
  - lib/windows/gdi/painting_drawing.rb
@@ -134,7 +143,7 @@ dependencies:
134
143
  - !ruby/object:Gem::Dependency
135
144
  name: windows-api
136
145
  version_requirement:
137
- version_requirements: !ruby/object:Gem::Version::Requirement
146
+ version_requirements: !ruby/object:Gem::Requirement
138
147
  requirements:
139
148
  - - ">="
140
149
  - !ruby/object:Gem::Version