windows-pr 0.2.0 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,120 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module EventLog
5
+ EVENTLOG_SEQUENTIAL_READ = 0x0001
6
+ EVENTLOG_SEEK_READ = 0x0002
7
+ EVENTLOG_FORWARDS_READ = 0x0004
8
+ EVENTLOG_BACKWARDS_READ = 0x0008
9
+
10
+ EVENTLOG_SUCCESS = 0x0000
11
+ EVENTLOG_ERROR_TYPE = 0x0001
12
+ EVENTLOG_WARNING_TYPE = 0x0002
13
+ EVENTLOG_INFORMATION_TYPE = 0x0004
14
+ EVENTLOG_AUDIT_SUCCESS = 0x0008
15
+ EVENTLOG_AUDIT_FAILURE = 0x0010
16
+
17
+ EVENTLOG_FULL_INFO = 0
18
+
19
+ BackupEventLog = Win32API.new('advapi32', 'BackupEventLog', 'LP', 'I')
20
+ BackupEventLogW = Win32API.new('advapi32', 'BackupEventLogW', 'LP', 'I')
21
+ ClearEventLog = Win32API.new('advapi32', 'ClearEventLog', 'LP', 'I')
22
+ ClearEventLogW = Win32API.new('advapi32', 'ClearEventLogW', 'LP', 'I')
23
+ CloseEventLog = Win32API.new('advapi32', 'CloseEventLog', 'L', 'I')
24
+ DeregisterEventSource = Win32API.new('advapi32', 'DeregisterEventSource', 'L', 'I')
25
+ GetEventLogInformation = Win32API.new('advapi32', 'GetEventLogInformation', 'LLPLP', 'I')
26
+ GetNumberOfEventLogRecords = Win32API.new('advapi32', 'GetNumberOfEventLogRecords', 'LP', 'I')
27
+ GetOldestEventLogRecord = Win32API.new('advapi32', 'GetOldestEventLogRecord', 'LP', 'I')
28
+ NotifyChangeEventLog = Win32API.new('advapi32', 'NotifyChangeEventLog', 'LL', 'I')
29
+ OpenBackupEventLog = Win32API.new('advapi32', 'OpenBackupEventLog', 'PP', 'L')
30
+ OpenBackupEventLogW = Win32API.new('advapi32', 'OpenBackupEventLogW', 'PP', 'L')
31
+ OpenEventLog = Win32API.new('advapi32', 'OpenEventLog', 'PP', 'L')
32
+ OpenEventLogW = Win32API.new('advapi32', 'OpenEventLogW', 'PP', 'L')
33
+ ReadEventLog = Win32API.new('advapi32', 'ReadEventLog', 'LLLPLPP', 'I')
34
+ ReadEventLogW = Win32API.new('advapi32', 'ReadEventLogW', 'LLLPLPP', 'I')
35
+ RegisterEventSource = Win32API.new('advapi32', 'RegisterEventSource', 'PP', 'L')
36
+ RegisterEventSourceW = Win32API.new('advapi32', 'RegisterEventSourceW', 'PP', 'L')
37
+ ReportEvent = Win32API.new('advapi32', 'ReportEvent', 'LIILPILPP', 'I')
38
+ ReportEventW = Win32API.new('advapi32', 'ReportEventW', 'LIILPILPP', 'I')
39
+
40
+ def BackupEventLog(handle, file)
41
+ BackupEventLog.call(handle, file) != 0
42
+ end
43
+
44
+ def BackupEventLogW(handle, file)
45
+ BackupEventLogW.call(handle, file) != 0
46
+ end
47
+
48
+ def ClearEventLog(handle, file = 0)
49
+ ClearEventLog.call(handle, file) != 0
50
+ end
51
+
52
+ def ClearEventLogW(handle, file = 0)
53
+ ClearEventLogW.call(handle, file) != 0
54
+ end
55
+
56
+ def CloseEventLog(handle)
57
+ CloseEventLog.call(handle) != 0
58
+ end
59
+
60
+ def DeregisterEventSource(handle)
61
+ DeregisterEventSource.call(handle) != 0
62
+ end
63
+
64
+ def GetEventLogInformation(handle, level, buf, buf_size, bytes)
65
+ GetEventLogInformation.call(handle, level, buf, buf_size, bytes) != 0
66
+ end
67
+
68
+ def GetNumberOfEventLogRecords(handle, num)
69
+ GetNumberOfEventLogRecords.call(handle, num) != 0
70
+ end
71
+
72
+ def GetOldestEventLogRecord(handle, rec)
73
+ GetOldestEventLogRecord.call(handle, rec) != 0
74
+ end
75
+
76
+ def NotifyChangeEventLog(handle, event)
77
+ NotifyChangeEventLog.call(handle, event) != 0
78
+ end
79
+
80
+ def OpenBackupEventLog(server, file)
81
+ OpenBackupEventLog.call(server, file)
82
+ end
83
+
84
+ def OpenBackupEventLogW(server, file)
85
+ OpenBackupEventLogW.call(server, file)
86
+ end
87
+
88
+ def OpenEventLog(server, source)
89
+ OpenEventLog.call(server, source)
90
+ end
91
+
92
+ def OpenEventLogW(server, source)
93
+ OpenEventLogW.call(server, source)
94
+ end
95
+
96
+ def ReadEventLog(handle, flags, offset, buf, bytes, bytes_read, min_bytes)
97
+ ReadEventLog.call(handle, flags, offset, buf, bytes, bytes_read, min_bytes) != 0
98
+ end
99
+
100
+ def ReadEventLogW(handle, flags, offset, buf, bytes, bytes_read, min_bytes)
101
+ ReadEventLogW.call(handle, flags, offset, buf, bytes, bytes_read, min_bytes) != 0
102
+ end
103
+
104
+ def RegisterEventSource(server, source)
105
+ RegisterEventSource.call(server, source)
106
+ end
107
+
108
+ def RegisterEventSourceW(server, source)
109
+ RegisterEventSourceW.call(server, source)
110
+ end
111
+
112
+ def ReportEvent(handle, type, cat, id, sid, num, size, strings, raw)
113
+ ReportEvent.call(handle, type, cat, id, sid, num, size, strings, raw) != 0
114
+ end
115
+
116
+ def ReportEventW(handle, type, cat, id, sid, num, size, strings, raw)
117
+ ReportEventW.call(handle, type, cat, id, sid, num, size, strings, raw) != 0
118
+ end
119
+ end
120
+ end
data/lib/windows/file.rb CHANGED
@@ -1,36 +1,4 @@
1
- ######################################################################
2
- # file.rb
3
- #
4
- # Defines the following functions:
5
- #
6
- # CopyFile()
7
- # CopyFileEx()
8
- # CreateFile()
9
- # CreateHardLink()
10
- # DecryptFile()
11
- # DeleteFile()
12
- # EncryptFile()
13
- # GetFileAttributes()
14
- # GetFileAttributesEx()
15
- # GetFileSize()
16
- # GetFileSizeEx()
17
- # GetFileType()
18
- # LockFile()
19
- # LockFileEx()
20
- # ReadFile()
21
- # ReadFileEx()
22
- # ReOpenFile()
23
- # SetFileAttributes()
24
- # UnlockFile()
25
- # UnlockFileEx()
26
- # WriteFile()
27
- # WriteFileEx()
28
- #
29
- # TODO:
30
- #
31
- # Add remaining file functions.
32
- ######################################################################
33
- require 'Win32API'
1
+ require 'windows/unicode'
34
2
 
35
3
  module Windows
36
4
  module File
@@ -169,6 +137,40 @@ module Windows
169
137
  OPEN_EXISTING = 3
170
138
  OPEN_ALWAYS = 4
171
139
  TRUNCATE_EXISTING = 5
140
+
141
+ # Page file access
142
+ PAGE_NOACCESS = 0x01
143
+ PAGE_READONLY = 0x02
144
+ PAGE_READWRITE = 0x04
145
+ PAGE_WRITECOPY = 0x08
146
+ PAGE_EXECUTE = 0x10
147
+ PAGE_EXECUTE_READ = 0x20
148
+ PAGE_EXECUTE_READWRITE = 0x40
149
+ PAGE_EXECUTE_WRITECOPY = 0x80
150
+ PAGE_GUARD = 0x100
151
+ PAGE_NOCACHE = 0x200
152
+ PAGE_WRITECOMBINE = 0x400
153
+ SEC_FILE = 0x800000
154
+ SEC_IMAGE = 0x1000000
155
+ SEC_VLM = 0x2000000
156
+ SEC_RESERVE = 0x4000000
157
+ SEC_COMMIT = 0x8000000
158
+ SEC_NOCACHE = 0x10000000
159
+
160
+ SECTION_QUERY = 0x0001
161
+ SECTION_MAP_WRITE = 0x0002
162
+ SECTION_MAP_READ = 0x0004
163
+ SECTION_MAP_EXECUTE = 0x0008
164
+ SECTION_EXTEND_SIZE = 0x0010
165
+
166
+ SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SECTION_QUERY |
167
+ SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE |
168
+ SECTION_EXTEND_SIZE
169
+
170
+ FILE_MAP_COPY = SECTION_QUERY
171
+ FILE_MAP_WRITE = SECTION_MAP_WRITE
172
+ FILE_MAP_READ = SECTION_MAP_READ
173
+ FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS
172
174
 
173
175
  # Errors
174
176
  INVALID_FILE_ATTRIBUTES = -1
@@ -178,10 +180,16 @@ module Windows
178
180
  CopyFile = Win32API.new('kernel32', 'CopyFile', 'PPI', 'I')
179
181
  CopyFileEx = Win32API.new('kernel32', 'CopyFileEx', 'PPPPPL', 'I')
180
182
  CreateFile = Win32API.new('kernel32', 'CreateFile', 'PLLPLLL', 'L')
183
+ CreateFileW = Win32API.new('kernel32', 'CreateFileW', 'PLLPLLL', 'L')
184
+
185
+ CreateFileMapping = Win32API.new('kernel32', 'CreateFileMapping', 'LPLLLP', 'L')
186
+
181
187
  CreateHardLink = Win32API.new('kernel32', 'CreateHardLink', 'PPP', 'I')
182
188
  DecryptFile = Win32API.new('advapi32', 'DecryptFile', 'PL', 'I')
183
189
  DeleteFile = Win32API.new('kernel32', 'DeleteFile', 'P', 'I')
184
190
  EncryptFile = Win32API.new('advapi32', 'EncryptFile', 'P', 'I')
191
+
192
+ FlushViewOfFile = Win32API.new('kernel32', 'FlushViewOfFile', 'PL', 'I')
185
193
 
186
194
  GetBinaryType = Win32API.new('kernel32', 'GetBinaryType', 'PP', 'I')
187
195
  GetFileAttributes = Win32API.new('kernel32', 'GetFileAttributes', 'P', 'L')
@@ -189,9 +197,18 @@ module Windows
189
197
  GetFileSize = Win32API.new('kernel32', 'GetFileSize', 'LP', 'L')
190
198
  GetFileSizeEx = Win32API.new('kernel32', 'GetFileSizeEx', 'LP', 'L')
191
199
  GetFileType = Win32API.new('kernel32', 'GetFileType', 'L', 'L')
200
+ GetFullPathName = Win32API.new('kernel32', 'GetFullPathName', 'PLPP', 'L')
201
+ GetFullPathNameW = Win32API.new('kernel32', 'GetFullPathNameW', 'PLPP', 'L')
202
+ GetLongPathName = Win32API.new('kernel32', 'GetLongPathName', 'PPL', 'L')
203
+ GetShortPathName = Win32API.new('kernel32', 'GetShortPathName', 'PPL', 'L')
192
204
 
193
205
  LockFile = Win32API.new('kernel32', 'LockFile', 'LLLLL', 'I')
194
206
  LockFileEx = Win32API.new('kernel32', 'LockFileEx', 'LLLLLL', 'I')
207
+
208
+ MapViewOfFile = Win32API.new('kernel32', 'MapViewOfFile', 'LLLLL', 'L')
209
+ MapViewOfFileEx = Win32API.new('kernel32', 'MapViewOfFileEx', 'LLLLLL', 'L')
210
+ OpenFileMapping = Win32API.new('kernel32', 'OpenFileMapping', 'LIP', 'L')
211
+
195
212
  ReadFile = Win32API.new('kernel32', 'ReadFile', 'LPLPP', 'I')
196
213
  ReadFileEx = Win32API.new('kernel32', 'ReadFileEx', 'LPLPP', 'I')
197
214
 
@@ -199,6 +216,9 @@ module Windows
199
216
 
200
217
  UnlockFile = Win32API.new('kernel32', 'UnlockFile', 'LLLLL', 'I')
201
218
  UnlockFileEx = Win32API.new('kernel32', 'UnlockFileEx', 'LLLLL', 'I')
219
+
220
+ UnmapViewOfFile = Win32API.new('kernel32', 'UnmapViewOfFile', 'P', 'I')
221
+
202
222
  WriteFile = Win32API.new('kernel32', 'WriteFile', 'LPLPP', 'I')
203
223
  WriteFileEx = Win32API.new('kernel32', 'WriteFileEx', 'LPLPP', 'I')
204
224
 
@@ -214,6 +234,10 @@ module Windows
214
234
  CreateFile.call(file, access, share, sec, disp, flags, template)
215
235
  end
216
236
 
237
+ def CreateFileMapping(handle, security, protect, high, low, name)
238
+ CreateFileMapping.call(handle, security, protect, high, low, name)
239
+ end
240
+
217
241
  def CreateHardLink(new_file, old_file, attributes)
218
242
  CreateHardLink.call(new_file, old_file, attributes) > 0
219
243
  end
@@ -229,6 +253,10 @@ module Windows
229
253
  def EncryptFile(file)
230
254
  EncryptFile.call(file) > 0
231
255
  end
256
+
257
+ def FlushViewOfFile(address, bytes)
258
+ FlushViewOfFile.call(address, bytes) != 0
259
+ end
232
260
 
233
261
  def GetBinaryType(file, type)
234
262
  GetBinaryType.call(file, type) > 0
@@ -253,6 +281,18 @@ module Windows
253
281
  def GetFileType(handle)
254
282
  GetFileType.call(handle)
255
283
  end
284
+
285
+ def GetFullPathName(file, buf, buf_size, part)
286
+ GetFullPathName.call(file, buf, buf_size, part)
287
+ end
288
+
289
+ def GetLongPathName(short, buf, buf_size)
290
+ GetLongPathName.call(short, buf, buf_size)
291
+ end
292
+
293
+ def GetShortPathName(long, buf, buf_size)
294
+ GetShortPathName.call(long, buf, buf_size)
295
+ end
256
296
 
257
297
  def LockFile(handle, off_low, off_high, lock_low, lock_high)
258
298
  LockFile.call(handle, off_low, off_high, lock_low, lock_high) > 0
@@ -262,6 +302,18 @@ module Windows
262
302
  LockFileEx.call(handle, flags, res, low, high, overlapped) > 0
263
303
  end
264
304
 
305
+ def MapViewOfFile(handle, access, high, low, bytes)
306
+ MapViewOfFile.call(handle, access, high, low, bytes)
307
+ end
308
+
309
+ def MapViewOfFileEx(handle, access, high, low, bytes, address)
310
+ MapViewOfFileEx.call(handle, access, high, low, bytes, address)
311
+ end
312
+
313
+ def OpenFileMapping(access, inherit, name)
314
+ OpenFileMapping.call(access, inherit, name)
315
+ end
316
+
265
317
  def ReadFile(file, buf, bytes, bytes_read, overlapped)
266
318
  ReadFile.call(file, buf, bytes, bytes_read, overlapped) > 0
267
319
  end
@@ -282,6 +334,10 @@ module Windows
282
334
  UnlockFileEx.call(handle, res, low, high, overlapped) > 0
283
335
  end
284
336
 
337
+ def UnmapViewOfFile(address)
338
+ UnmapViewOfFile.call(address) != 0
339
+ end
340
+
285
341
  def WriteFile(handle, buf, bytes, overlapped)
286
342
  WriteFileEx.call(handle, buf, bytes, overlapped) > 0
287
343
  end
@@ -1,19 +1,3 @@
1
- #####################################################################
2
- # handle.rb
3
- #
4
- # Defines the following functions:
5
- #
6
- # CloseHandle()
7
- # DuplicateHandle()
8
- # GetHandleInformation()
9
- # SetHandleInformation()
10
- #
11
- # Defines the following constants
12
- #
13
- # INVALID_HANDLE_VALUE
14
- # HANDLE_FLAG_INHERIT
15
- # HANDLE_FLAG_PROTECT_FROM_CLOSE
16
- ######################################################################
17
1
  require 'Win32API'
18
2
 
19
3
  module Windows
@@ -0,0 +1,76 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module Library
5
+ DLL_PROCESS_DETACH = 0
6
+ DLL_PROCESS_ATTACH = 1
7
+ DLL_THREAD_ATTACH = 2
8
+ DLL_THREAD_DETACH = 3
9
+
10
+ GET_MODULE_HANDLE_EX_FLAG_PIN = 1
11
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
12
+ GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
13
+
14
+ DONT_RESOLVE_DLL_REFERENCES = 0x00000001
15
+ LOAD_LIBRARY_AS_DATAFILE = 0x00000002
16
+ LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008
17
+ LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010
18
+
19
+ DisableThreadLibraryCalls = Win32API.new('kernel32', 'DisableThreadLibraryCalls', 'L', 'I')
20
+ FreeLibrary = Win32API.new('kernel32', 'FreeLibrary', 'L', 'I')
21
+ FreeLibraryAndExitThread = Win32API.new('kernel32', 'FreeLibraryAndExitThread', 'LL', 'V')
22
+ GetDllDirectory = Win32API.new('kernel32', 'GetDllDirectory', 'LP', 'L')
23
+ GetModuleFileName = Win32API.new('kernel32', 'GetModuleFileName', 'LPL', 'L')
24
+ GetModuleHandle = Win32API.new('kernel32', 'GetModuleHandle', 'P', 'L')
25
+ GetModuleHandleEx = Win32API.new('kernel32', 'GetModuleHandleEx', 'LPP', 'I')
26
+ GetProcAddress = Win32API.new('kernel32', 'GetProcAddress', 'LP', 'L')
27
+ LoadLibrary = Win32API.new('kernel32', 'LoadLibrary', 'P', 'L')
28
+ LoadLibraryEx = Win32API.new('kernel32', 'LoadLibraryEx', 'PLL', 'L')
29
+ LoadModule = Win32API.new('kernel32', 'LoadModule', 'PP', 'L')
30
+ SetDllDirectory = Win32API.new('kernel32', 'SetDllDirectory', 'P', 'I')
31
+
32
+ def DisableThreadLibraryCalls(hmodule)
33
+ DisableThreadLibraryCalls.call(hmodule) != 0
34
+ end
35
+
36
+ def FreeLibrary(hmodule)
37
+ FreeLibrary.call(hmodule) != 0
38
+ end
39
+
40
+ def GetDllDirectory(length, buffer)
41
+ GetDllDirectory.call(length, buffer)
42
+ end
43
+
44
+ def GetModuleFileName(hmodule, file, size)
45
+ GetModuleFileName.call(hmodule, file, size)
46
+ end
47
+
48
+ def GetModuleHandle(module_name)
49
+ GetModuleHandle.call(module_name)
50
+ end
51
+
52
+ def GetModuleHandleEx(flags, module_name, hmodule)
53
+ GetModuleHandleEx.call(flags, module_name, hmodule)
54
+ end
55
+
56
+ def GetProcAddress(hmodule, proc_name)
57
+ GetProcAddress.call(hmodule, proc_name)
58
+ end
59
+
60
+ def LoadLibrary(library)
61
+ LoadLibrary.call(library)
62
+ end
63
+
64
+ def LoadLibraryEx(library, file, flags)
65
+ LoadLibraryEx.call(library, file, flags)
66
+ end
67
+
68
+ def LoadModule(hmodule, param_block)
69
+ LoadModule.call(hmodule, param_block)
70
+ end
71
+
72
+ def SetDllDirectory(path)
73
+ SetDllDirectory.call(path)
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,13 @@
1
+ module Windows
2
+ module Limits
3
+ MINCHAR = 0x80
4
+ MAXCHAR = 0x7f
5
+ MINSHORT = 0x8000
6
+ MAXSHORT = 0x7fff
7
+ MINLONG = 0x80000000
8
+ MAXLONG = 0x7fffffff
9
+ MAXBYTE = 0xff
10
+ MAXWORD = 0xffff
11
+ MAXDWORD = 0xffffffff
12
+ end
13
+ end
@@ -1,28 +1,3 @@
1
- ######################################################################
2
- # memory.rb
3
- #
4
- # Includes the following functions:
5
- #
6
- # GlobalAlloc()
7
- # GlobalDiscard()
8
- # GlobalFlags()
9
- # GlobalFree()
10
- # GlobalHandle()
11
- # GlobalLock()
12
- # GlobalMemoryStatus()
13
- # GlobalMemoryStatusEx()
14
- # GlobalReAlloc()
15
- # GlobalSize()
16
- # GlobalUnlock()
17
- #
18
- # Defines the following constants:
19
- #
20
- # GHND
21
- # GMEM_FIXED
22
- # GMEM_MOVABLE
23
- # GMEM_ZEROINIT
24
- # GPTR
25
- ######################################################################
26
1
  require 'Win32API'
27
2
 
28
3
  module Windows
@@ -34,25 +9,31 @@ module Windows
34
9
  GPTR = 0x0040
35
10
 
36
11
  GlobalAlloc = Win32API.new('kernel32', 'GlobalAlloc', 'II', 'I')
37
- GlobalDiscard = Win32API.new('kernel32', 'GlobalDiscard', 'I', 'I')
38
12
  GlobalFlags = Win32API.new('kernel32', 'GlobalFlags', 'I', 'I')
39
13
  GlobalFree = Win32API.new('kernel32', 'GlobalFree', 'I', 'I')
40
14
  GlobalHandle = Win32API.new('kernel32', 'GlobalHandle', 'P', 'I')
41
- GlobalLock = Win32API.new('kernel32', 'GlobalLock', 'I', 'P')
15
+ GlobalLock = Win32API.new('kernel32', 'GlobalLock', 'L', 'L')
42
16
  GlobalMemoryStatus = Win32API.new('kernel32', 'GlobalMemoryStatus', 'P', 'V')
43
- GlobalMemoryStatusEx = Win32API.new('kernel32', 'GlobalMemoryStatus', 'P', 'V')
17
+ GlobalMemoryStatusEx = Win32API.new('kernel32', 'GlobalMemoryStatusEx', 'P', 'V')
44
18
  GlobalReAlloc = Win32API.new('kernel32', 'GlobalReAlloc', 'III', 'I')
45
19
  GlobalSize = Win32API.new('kernel32', 'GlobalSize', 'I', 'I')
46
20
  GlobalUnlock = Win32API.new('kernel32', 'GlobalUnlock', 'I', 'I')
21
+ VirtualAlloc = Win32API.new('kernel32', 'VirtualAlloc', 'PLLL', 'P')
22
+ VirtualAllocEx = Win32API.new('kernel32', 'VirtualAllocEx', 'LPLLL', 'P')
23
+ VirtualFree = Win32API.new('kernel32', 'VirtualFree', 'PLL', 'I')
24
+ VirtualFreeEx = Win32API.new('kernel32', 'VirtualFreeEx', 'LPLL', 'I')
25
+ VirtualLock = Win32API.new('kernel32', 'VirtualLock', 'PL', 'I')
26
+ VirtualProtect = Win32API.new('kernel32', 'VirtualProtect', 'PLLP', 'I')
27
+ VirtualProtectEx = Win32API.new('kernel32', 'VirtualProtectEx', 'LPLLP', 'I')
28
+ VirtualQuery = Win32API.new('kernel32', 'VirtualQuery', 'PPL', 'L')
29
+ VirtualQueryEx = Win32API.new('kernel32', 'VirtualQueryEx', 'LPPL', 'L')
30
+ VirtualUnlock = Win32API.new('kernel32', 'VirtualUnlock', 'PL', 'I')
31
+ ZeroMemory = Win32API.new('kernel32', 'RtlZeroMemory', 'PL', 'I')
47
32
 
48
33
  def GlobalAlloc(flags, bytes)
49
34
  GlobalAlloc.call(flags, bytes)
50
35
  end
51
36
 
52
- def GlobalDiscard(handle)
53
- GlobalDiscard.call(handle)
54
- end
55
-
56
37
  def GlobalFlags(handle)
57
38
  GlobalFlags.call(handle)
58
39
  end
@@ -66,7 +47,7 @@ module Windows
66
47
  end
67
48
 
68
49
  def GlobalLock(handle)
69
- GlobalHandle.call(handle)
50
+ GlobalLock.call(handle)
70
51
  end
71
52
 
72
53
  def GlobalMemoryStatus(buf)
@@ -88,5 +69,49 @@ module Windows
88
69
  def GlobalUnlock(handle)
89
70
  GlobalUnlock.call(handle)
90
71
  end
72
+
73
+ def VirtualAlloc(address, size, alloc_type, protect)
74
+ VirtualAlloc.call(address, size, alloc_type, protect)
75
+ end
76
+
77
+ def VirtualAllocEx(handle, address, size, alloc_type, protect)
78
+ VirtualAllocEx.call(handle, address, size, alloc_type, protect)
79
+ end
80
+
81
+ def VirtualFree(address, size, free_type)
82
+ VirtualFree.call(address, size, free_type) != 0
83
+ end
84
+
85
+ def VirtualFreeEx(handle, address, size, free_type)
86
+ VirtualFreeEx.call(handle, address, size, free_type) != 0
87
+ end
88
+
89
+ def VirtualLock(address, size)
90
+ VirtualLock.call(address, size) != 0
91
+ end
92
+
93
+ def VirtualProtect(address, size, new_protect, old_protect)
94
+ VirtualProtect.call(address, size, new_protect, old_protect) != 0
95
+ end
96
+
97
+ def VirtualProtectEx(handle, address, size, new_protect, old_protect)
98
+ VirtualProtect.call(handle, address, size, new_protect, old_protect) != 0
99
+ end
100
+
101
+ def VirtualQuery(address, buffer, length)
102
+ VirtualQuery.call(address, buffer, length)
103
+ end
104
+
105
+ def VirtualQueryEx(handle, address, buffer, length)
106
+ VirtualQueryEx.call(handle, address, buffer, length)
107
+ end
108
+
109
+ def VirtualUnlock(address, size)
110
+ VirtualUnlock.call(address, size) != 0
111
+ end
112
+
113
+ def ZeroMemory(dest, length)
114
+ ZeroMemory.call(dest, length)
115
+ end
91
116
  end
92
117
  end