windows-pr 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. data/CHANGES +15 -0
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +37 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +2 -0
  7. data/lib/windows/com.rb +2 -0
  8. data/lib/windows/com/accessibility.rb +12 -10
  9. data/lib/windows/com/automation.rb +149 -147
  10. data/lib/windows/com/variant.rb +24 -22
  11. data/lib/windows/console.rb +114 -112
  12. data/lib/windows/debug.rb +35 -33
  13. data/lib/windows/device_io.rb +248 -246
  14. data/lib/windows/directory.rb +2 -0
  15. data/lib/windows/error.rb +2 -0
  16. data/lib/windows/eventlog.rb +2 -0
  17. data/lib/windows/file.rb +264 -262
  18. data/lib/windows/file_mapping.rb +25 -23
  19. data/lib/windows/filesystem.rb +2 -0
  20. data/lib/windows/gdi/bitmap.rb +65 -63
  21. data/lib/windows/gdi/device_context.rb +46 -44
  22. data/lib/windows/gdi/metafile.rb +40 -38
  23. data/lib/windows/gdi/painting_drawing.rb +115 -113
  24. data/lib/windows/handle.rb +2 -0
  25. data/lib/windows/library.rb +2 -0
  26. data/lib/windows/limits.rb +34 -31
  27. data/lib/windows/mailslot.rb +2 -0
  28. data/lib/windows/memory.rb +2 -0
  29. data/lib/windows/msvcrt/buffer.rb +75 -73
  30. data/lib/windows/msvcrt/directory.rb +31 -29
  31. data/lib/windows/msvcrt/file.rb +47 -45
  32. data/lib/windows/msvcrt/io.rb +62 -60
  33. data/lib/windows/msvcrt/string.rb +2 -0
  34. data/lib/windows/msvcrt/time.rb +169 -167
  35. data/lib/windows/national.rb +580 -578
  36. data/lib/windows/network/management.rb +525 -523
  37. data/lib/windows/network/snmp.rb +92 -90
  38. data/lib/windows/network/winsock.rb +128 -126
  39. data/lib/windows/nio.rb +2 -0
  40. data/lib/windows/ntfs/winternl.rb +96 -82
  41. data/lib/windows/path.rb +143 -141
  42. data/lib/windows/pipe.rb +42 -40
  43. data/lib/windows/process.rb +2 -0
  44. data/lib/windows/registry.rb +171 -126
  45. data/lib/windows/security.rb +479 -477
  46. data/lib/windows/security/authentication.rb +32 -30
  47. data/lib/windows/service.rb +142 -140
  48. data/lib/windows/shell.rb +171 -169
  49. data/lib/windows/socket.rb +86 -0
  50. data/lib/windows/sound.rb +39 -37
  51. data/lib/windows/synchronize.rb +133 -131
  52. data/lib/windows/system_info.rb +4 -2
  53. data/lib/windows/thread.rb +2 -0
  54. data/lib/windows/time.rb +48 -46
  55. data/lib/windows/tool_helper.rb +36 -34
  56. data/lib/windows/unicode.rb +2 -0
  57. data/lib/windows/volume.rb +61 -59
  58. data/lib/windows/window.rb +81 -79
  59. data/lib/windows/window/classes.rb +59 -57
  60. data/lib/windows/window/dialog.rb +91 -89
  61. data/lib/windows/window/menu.rb +102 -100
  62. data/lib/windows/window/message.rb +297 -295
  63. data/lib/windows/window/properties.rb +20 -18
  64. data/lib/windows/window/timer.rb +19 -17
  65. data/lib/windows/wsa.rb +102 -0
  66. data/test/tc_clipboard.rb +41 -41
  67. data/test/tc_com.rb +32 -32
  68. data/test/tc_com_automation.rb +15 -15
  69. data/test/tc_console.rb +108 -108
  70. data/test/tc_debug.rb +48 -48
  71. data/test/tc_device_io.rb +29 -29
  72. data/test/tc_directory.rb +25 -25
  73. data/test/tc_error.rb +38 -50
  74. data/test/tc_eventlog.rb +58 -58
  75. data/test/tc_file.rb +67 -67
  76. data/test/tc_file_mapping.rb +38 -38
  77. data/test/tc_filesystem.rb +27 -27
  78. data/test/tc_gdi_bitmap.rb +25 -25
  79. data/test/tc_gdi_metafile.rb +23 -23
  80. data/test/tc_handle.rb +36 -36
  81. data/test/tc_library.rb +37 -37
  82. data/test/tc_limits.rb +34 -34
  83. data/test/tc_mailslot.rb +22 -22
  84. data/test/tc_memory.rb +44 -44
  85. data/test/tc_msvcrt_buffer.rb +59 -68
  86. data/test/tc_msvcrt_directory.rb +96 -98
  87. data/test/tc_msvcrt_file.rb +80 -80
  88. data/test/tc_msvcrt_io.rb +48 -48
  89. data/test/tc_msvcrt_string.rb +94 -93
  90. data/test/tc_msvcrt_time.rb +19 -29
  91. data/test/tc_national.rb +38 -38
  92. data/test/tc_network_management.rb +32 -32
  93. data/test/tc_network_snmp.rb +31 -31
  94. data/test/tc_network_winsock.rb +34 -34
  95. data/test/tc_nio.rb +32 -32
  96. data/test/tc_ntfs_winternl.rb +33 -18
  97. data/test/tc_path.rb +90 -90
  98. data/test/tc_pipe.rb +53 -53
  99. data/test/tc_process.rb +24 -24
  100. data/test/tc_registry.rb +29 -29
  101. data/test/tc_security.rb +104 -104
  102. data/test/tc_security_authentication.rb +34 -34
  103. data/test/tc_service.rb +57 -57
  104. data/test/tc_shell.rb +34 -34
  105. data/test/tc_socket.rb +20 -0
  106. data/test/tc_sound.rb +37 -37
  107. data/test/tc_synchronize.rb +75 -75
  108. data/test/tc_system_info.rb +33 -43
  109. data/test/tc_thread.rb +29 -29
  110. data/test/tc_time.rb +32 -32
  111. data/test/tc_tool_helper.rb +29 -29
  112. data/test/tc_unicode.rb +62 -62
  113. data/test/tc_volume.rb +47 -47
  114. data/test/tc_window.rb +45 -45
  115. data/test/tc_window_classes.rb +33 -33
  116. data/test/tc_window_dialog.rb +33 -33
  117. data/test/tc_window_menu.rb +29 -29
  118. data/test/tc_window_message.rb +33 -33
  119. data/test/tc_window_properties.rb +29 -29
  120. data/test/tc_window_timer.rb +29 -29
  121. data/test/tc_wsa.rb +19 -0
  122. data/windows-pr.gemspec +1 -1
  123. metadata +13 -7
@@ -1,523 +1,525 @@
1
- require 'windows/api'
2
-
3
- # I don't use the Boolean flag for the return types of these methods because
4
- # they succeed, not fail, if the return value is 0.
5
- #
6
- module Windows
7
- module Network
8
- module Management
9
- API.auto_namespace = 'Windows::Network::Management'
10
- API.auto_constant = true
11
- API.auto_method = false
12
- API.auto_unicode = false
13
-
14
- NERR_Success = 0
15
- NERR_BASE = 2100
16
- NERR_NetNotStarted = NERR_BASE + 2
17
- NERR_UnknownServer = NERR_BASE + 3
18
- NERR_ShareMem = NERR_BASE + 4
19
- NERR_NoNetworkResource = NERR_BASE + 5
20
- NERR_RemoteOnly = NERR_BASE + 6
21
- NERR_DevNotRedirected = NERR_BASE + 7
22
- NERR_AlreadyLoggedOn = NERR_BASE + 100
23
- NERR_NotLoggedOn = NERR_BASE + 101
24
- NERR_BadUsername = NERR_BASE + 102
25
- NERR_BadPassword = NERR_BASE + 103
26
- NERR_UnableToAddName_W = NERR_BASE + 104
27
- NERR_UnableToAddName_F = NERR_BASE + 105
28
- NERR_UnableToDelName_W = NERR_BASE + 106
29
- NERR_UnableToDelName_F = NERR_BASE + 107
30
- NERR_LogonsPaused = NERR_BASE + 109
31
- NERR_LogonServerConflict = NERR_BASE + 110
32
- NERR_LogonNoUserPath = NERR_BASE + 111
33
- NERR_LogonScriptError = NERR_BASE + 112
34
- NERR_StandaloneLogon = NERR_BASE + 114
35
- NERR_LogonServerNotFound = NERR_BASE + 115
36
- NERR_LogonDomainExists = NERR_BASE + 116
37
- NERR_NonValidatedLogon = NERR_BASE + 117
38
- NERR_ACFNotFound = NERR_BASE + 119
39
- NERR_GroupNotFound = NERR_BASE + 120
40
- NERR_UserNotFound = NERR_BASE + 121
41
- NERR_ResourceNotFound = NERR_BASE + 122
42
- NERR_GroupExists = NERR_BASE + 123
43
- NERR_UserExists = NERR_BASE + 124
44
- NERR_ResourceExists = NERR_BASE + 125
45
- NERR_NotPrimary = NERR_BASE + 126
46
- NERR_ACFNotLoaded = NERR_BASE + 127
47
- NERR_ACFNoRoom = NERR_BASE + 128
48
- NERR_ACFFileIOFail = NERR_BASE + 129
49
- NERR_ACFTooManyLists = NERR_BASE + 130
50
- NERR_UserLogon = NERR_BASE + 131
51
- NERR_ACFNoParent = NERR_BASE + 132
52
- NERR_CanNotGrowSegment = NERR_BASE + 133
53
- NERR_SpeGroupOp = NERR_BASE + 134
54
- NERR_NotInCache = NERR_BASE + 135
55
- NERR_UserInGroup = NERR_BASE + 136
56
- NERR_UserNotInGroup = NERR_BASE + 137
57
- NERR_AccountUndefined = NERR_BASE + 138
58
- NERR_AccountExpired = NERR_BASE + 139
59
- NERR_InvalidWorkstation = NERR_BASE + 140
60
- NERR_InvalidLogonHours = NERR_BASE + 141
61
- NERR_PasswordExpired = NERR_BASE + 142
62
- NERR_PasswordCantChange = NERR_BASE + 143
63
- NERR_PasswordHistConflict = NERR_BASE + 144
64
- NERR_PasswordTooShort = NERR_BASE + 145
65
- NERR_PasswordTooRecent = NERR_BASE + 146
66
- NERR_InvalidDatabase = NERR_BASE + 147
67
- NERR_DatabaseUpToDate = NERR_BASE + 148
68
- NERR_SyncRequired = NERR_BASE + 149
69
- NERR_UseNotFound = NERR_BASE + 150
70
- NERR_BadAsgType = NERR_BASE + 151
71
- NERR_DeviceIsShared = NERR_BASE + 152
72
-
73
- MAX_PREFERRED_LENGTH = 0xFFFFFFFF
74
-
75
- # Taken from LMServer.h
76
- SV_TYPE_WORKSTATION = 0x00000001
77
- SV_TYPE_SERVER = 0x00000002
78
- SV_TYPE_SQLSERVER = 0x00000004
79
- SV_TYPE_DOMAIN_CTRL = 0x00000008
80
- SV_TYPE_DOMAIN_BAKCTRL = 0x00000010
81
- SV_TYPE_TIME_SOURCE = 0x00000020
82
- SV_TYPE_AFP = 0x00000040
83
- SV_TYPE_NOVELL = 0x00000080
84
- SV_TYPE_DOMAIN_MEMBER = 0x00000100
85
- SV_TYPE_PRINTQ_SERVER = 0x00000200
86
- SV_TYPE_DIALIN_SERVER = 0x00000400
87
- SV_TYPE_XENIX_SERVER = 0x00000800
88
- SV_TYPE_SERVER_UNIX = SV_TYPE_XENIX_SERVER
89
- SV_TYPE_NT = 0x00001000
90
- SV_TYPE_WFW = 0x00002000
91
- SV_TYPE_SERVER_MFPN = 0x00004000
92
- SV_TYPE_SERVER_NT = 0x00008000
93
- SV_TYPE_POTENTIAL_BROWSER = 0x00010000
94
- SV_TYPE_BACKUP_BROWSER = 0x00020000
95
- SV_TYPE_MASTER_BROWSER = 0x00040000
96
- SV_TYPE_DOMAIN_MASTER = 0x00080000
97
- SV_TYPE_SERVER_OSF = 0x00100000
98
- SV_TYPE_SERVER_VMS = 0x00200000
99
- SV_TYPE_WINDOWS = 0x00400000
100
- SV_TYPE_DFS = 0x00800000
101
- SV_TYPE_CLUSTER_NT = 0x01000000
102
- SV_TYPE_TERMINALSERVER = 0x02000000
103
- SV_TYPE_CLUSTER_VS_NT = 0x04000000
104
- SV_TYPE_DCE = 0x10000000
105
- SV_TYPE_ALTERNATE_XPORT = 0x20000000
106
- SV_TYPE_LOCAL_LIST_ONLY = 0x40000000
107
- SV_TYPE_DOMAIN_ENUM = 0x80000000
108
- SV_TYPE_ALL = 0xFFFFFFFF
109
-
110
- API.new('NetAlertRaise', 'SPL', 'L', 'netapi32')
111
- API.new('NetAlertRaiseEx', 'SPLS', 'L', 'netapi32')
112
- API.new('NetApiBufferAllocate', 'LP', 'L', 'netapi32')
113
- API.new('NetApiBufferFree', 'P', 'L', 'netapi32')
114
- API.new('NetApiBufferReallocate', 'PLP', 'L', 'netapi32')
115
- API.new('NetApiBufferSize', 'PP', 'L', 'netapi32')
116
- API.new('NetGetAnyDCName', 'SSP', 'L', 'netapi32')
117
- API.new('NetGetDCName', 'SSP', 'L', 'netapi32')
118
- API.new('NetGetDisplayInformationIndex', 'SLPP', 'L', 'netapi32')
119
- API.new('NetGetJoinableOUs', 'SSSSPP', 'L', 'netapi32')
120
- API.new('NetGetJoinInformation', 'SPP', 'L', 'netapi32')
121
- API.new('NetGroupAdd', 'SLPP', 'L', 'netapi32')
122
- API.new('NetGroupAddUser', 'SSS', 'L', 'netapi32')
123
- API.new('NetGroupDel', 'SS', 'L', 'netapi32')
124
- API.new('NetGroupDelUser', 'SSS', 'L', 'netapi32')
125
- API.new('NetGroupEnum', 'SLPLPPP', 'L', 'netapi32')
126
- API.new('NetGroupGetInfo', 'SSLP', 'L', 'netapi32')
127
- API.new('NetGroupGetUsers', 'SSLPLPPP', 'L', 'netapi32')
128
- API.new('NetGroupSetInfo', 'SSLPP', 'L', 'netapi32')
129
- API.new('NetGroupSetUsers', 'SSLPL', 'L', 'netapi32')
130
- API.new('NetJoinDomain', 'SSSSSL', 'L', 'netapi32')
131
- API.new('NetLocalGroupAdd', 'SLPP', 'L', 'netapi32')
132
- API.new('NetLocalGroupAddMembers', 'SSLPL', 'L', 'netapi32')
133
- API.new('NetLocalGroupDel', 'SS', 'L', 'netapi32')
134
- API.new('NetLocalGroupDelMembers', 'SSLPL', 'L', 'netapi32')
135
- API.new('NetLocalGroupEnum', 'SLPLPPP', 'L', 'netapi32')
136
- API.new('NetLocalGroupGetInfo', 'SSLP', 'L', 'netapi32')
137
- API.new('NetLocalGroupGetMembers', 'SSLPLPPP', 'L', 'netapi32')
138
- API.new('NetLocalGroupSetInfo', 'SSLPP', 'L', 'netapi32')
139
- API.new('NetLocalGroupSetMembers', 'SSLPP', 'L', 'netapi32')
140
- API.new('NetMessageBufferSend', 'SSSPL', 'L', 'netapi32')
141
- API.new('NetMessageNameAdd', 'SS', 'L', 'netapi32')
142
- API.new('NetMessageNameDel', 'SS', 'L', 'netapi32')
143
- API.new('NetMessageNameEnum', 'SLPLPPP', 'L', 'netapi32')
144
- API.new('NetMessageNameGetInfo', 'SSLP', 'L', 'netapi32')
145
- API.new('NetQueryDisplayInformation', 'SLLLLPP', 'L', 'netapi32')
146
- API.new('NetRemoteComputerSupports', 'SLP', 'L', 'netapi32')
147
- API.new('NetRemoteTOD', 'SP', 'L', 'netapi32')
148
- API.new('NetRenameMachineInDomain', 'SSSSL', 'L', 'netapi32')
149
- API.new('NetScheduleJobAdd', 'SPP', 'L', 'netapi32')
150
- API.new('NetScheduleJobDel', 'SLL', 'L', 'netapi32')
151
- API.new('NetScheduleJobEnum', 'SPLPPP', 'L', 'netapi32')
152
- API.new('NetScheduleJobGetInfo', 'SLP', 'L', 'netapi32')
153
- API.new('NetServerComputerNameAdd', 'SSS', 'L', 'netapi32')
154
- API.new('NetServerComputerNameDel', 'SS', 'L', 'netapi32')
155
- API.new('NetServerDiskEnum', 'SLPLPPP', 'L', 'netapi32')
156
- API.new('NetServerEnum', 'SLPLPPLPP', 'L', 'netapi32')
157
- API.new('NetServerGetInfo', 'SLP', 'L', 'netapi32')
158
- API.new('NetServerSetInfo', 'SLPP', 'L', 'netapi32')
159
- API.new('NetServerTransportAdd', 'SLP', 'L', 'netapi32')
160
- API.new('NetServerTransportAddEx', 'SLP', 'L', 'netapi32')
161
- API.new('NetServerTransportDel', 'SLP', 'L', 'netapi32')
162
- API.new('NetServerTransportEnum', 'SLPLPPP', 'L', 'netapi32')
163
- API.new('NetUnjoinDomain', 'SSSL', 'L', 'netapi32')
164
- API.new('NetUseAdd', 'SLPP', 'L', 'netapi32')
165
- API.new('NetUseDel', 'SSL', 'L', 'netapi32')
166
- API.new('NetUseEnum', 'SLPLPPP', 'L', 'netapi32')
167
- API.new('NetUseGetInfo', 'SSLP', 'L', 'netapi32')
168
- API.new('NetUserAdd', 'SLPP', 'L', 'netapi32')
169
- API.new('NetUserChangePassword', 'SSSS', 'L', 'netapi32')
170
- API.new('NetUserDel', 'SS', 'L', 'netapi32')
171
- API.new('NetUserEnum', 'SLLPLPPP', 'L', 'netapi32')
172
- API.new('NetUserGetGroups', 'SSLPLPP', 'L', 'netapi32')
173
- API.new('NetUserGetInfo', 'SSLP', 'L', 'netapi32')
174
- API.new('NetUserGetLocalGroups', 'SSLLPLPP', 'L', 'netapi32')
175
- API.new('NetUserModalsGet', 'SLP', 'L', 'netapi32')
176
- API.new('NetUserModalsSet', 'SLPP', 'L', 'netapi32')
177
- API.new('NetUserSetGroups', 'SSLPL', 'L', 'netapi32')
178
- API.new('NetUserSetInfo', 'SSLPP', 'L', 'netapi32')
179
- API.new('NetValidateName', 'SSSSP', 'L', 'netapi32')
180
- API.new('NetWkstaGetInfo', 'SLP', 'L', 'netapi32')
181
- API.new('NetWkstaSetInfo', 'SLPP', 'L', 'netapi32')
182
- API.new('NetWkstaTransportAdd', 'SLPP', 'L', 'netapi32')
183
- API.new('NetWkstaTransportDel', 'SSL', 'L', 'netapi32')
184
- API.new('NetWkstaTransportEnum', 'SLPLPPP', 'L', 'netapi32')
185
- API.new('NetWkstaUserEnum', 'SLPLPPP', 'L', 'netapi32')
186
- API.new('NetWkstaUserGetInfo', 'PLP', 'L', 'netapi32')
187
- API.new('NetWkstaUserSetInfo', 'PPLP', 'L', 'netapi32')
188
-
189
- # Windows XP or later.
190
- begin
191
- API.new('GetNetScheduleAccountInformation', 'PLP', 'L', 'mstask')
192
- API.new('SetNetScheduleAccountInformation', 'PPP', 'L', 'netapi32')
193
- rescue Win32::API::LoadLibraryError
194
- # Do nothing. Not supported on current platform.
195
- end
196
-
197
- def NetAlertRaise(name, buf, bufsize)
198
- NetAlertRaise.call(name, buf, bufsize) == NERR_Success
199
- end
200
-
201
- def NetAlertRaiseEx(name, data, size, service)
202
- NetAlertRaiseEx.call(name, data, size, service) == NERR_Success
203
- end
204
-
205
- def NetApiBufferAllocate(num_bytes, buf)
206
- NetApiBufferAllocate.call(num_bytes, buf) == NERR_Success
207
- end
208
-
209
- def NetApiBufferFree(buf)
210
- NetApiBufferFree.call(buf) == NERR_Success
211
- end
212
-
213
- def NetApiBufferReallocate(old_buf, count, new_buf)
214
- NetApiBufferReallocate.call(old_buf, count, new_buf) == NERR_Success
215
- end
216
-
217
- def NetApiBufferSize(buf, count)
218
- NetApiBufferSize.call(buf, count) == NERR_Success
219
- end
220
-
221
- def NetGetAnyDCName(server, domain, buf)
222
- NetGetAnyDCName.call(server, domain, buf) == NERR_Success
223
- end
224
-
225
- def NetGetDCName(server, domain, buf)
226
- NetGetDCName.call(server, domain, buf) == NERR_Success
227
- end
228
-
229
- def NetGetDisplayInformationIndex(server, level, prefix, index)
230
- NetGetDisplayInformationIndex.call(server, level, prefix, index) == NERR_Success
231
- end
232
-
233
- def NetGetJoinableOUs(server, domain, account, password, count, ous)
234
- NetGetJoinableOUs.call(server, domain, account, password, count, ous) == NERR_Success
235
- end
236
-
237
- def NetGetJoinInformation(server, buf, buf_type)
238
- NetGetJoinInformation.call(server, buf, buf_type) == NERR_Success
239
- end
240
-
241
- def NetGroupAdd(server, level, buf, err)
242
- NetGroupAdd.call(server, level, buf, err).call == NERR_Success
243
- end
244
-
245
- def NetGroupAddUser(server, group, user)
246
- NetGroupAddUser.call(server, group, user) == NERR_Success
247
- end
248
-
249
- def NetGroupDel(server, group)
250
- NetGroupDel.call(server, group) == NERR_Success
251
- end
252
-
253
- def NetGroupDelUser(server, group, user)
254
- NetGroupDelUser.call(server, group, user) == NERR_Success
255
- end
256
-
257
- def NetGroupEnum(server, level, buf, max, entries, total_entries, resume)
258
- NetGroupEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
259
- end
260
-
261
- def NetGroupGetInfo(server, group, level, buf)
262
- NetGroupGetInfo.call(server, group, level, buf) == NERR_Success
263
- end
264
-
265
- def NetGroupGetUsers(server, group, level, buf, max, entries, total_entries, resume)
266
- NetGroupGetUsers.call(server, group, level, buf, max, entries, total_entries, resume) == NERR_Success
267
- end
268
-
269
- def NetGroupSetInfo(server, group, level, buf, err)
270
- NetGroupSetInfo.call(server, group, level, buf, err) == NERR_Success
271
- end
272
-
273
- def NetGroupSetUsers(server, group, level, buf, total)
274
- NetGroupSetUsers.call(server, group, level, buf, total) == NERR_Success
275
- end
276
-
277
- def NetJoinDomain(server, domain, account_ou, account, password, opts)
278
- NetJoinDomain.call(server, domain, account_ou, account, password, opts) == NERR_Success
279
- end
280
-
281
- def NetLocalGroupAdd(server, level, buf, err)
282
- NetLocalGroupAdd.call(server, level, buf, err) == NERR_Success
283
- end
284
-
285
- def NetLocalGroupAddMembers(server, group, level, buf, total)
286
- NetLocalGroupAddMembers.call(server, group, level, buf, total) == NERR_Success
287
- end
288
-
289
- def NetLocalGroupDel(server, group)
290
- NetLocalGroupDel.call(server, group) == NERR_Success
291
- end
292
-
293
- def NetLocalGroupDelMembers(server, group, level, buf, total)
294
- NetLocalGroupDelMembers.call(server, group, level, buf, total) == NERR_Success
295
- end
296
-
297
- def NetLocalGroupEnum(server, level, buf, max, entries, total_entries, resume)
298
- NetLocalGroupEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
299
- end
300
-
301
- def NetLocalGroupGetInfo(server, group, level, buf)
302
- NetLocalGroupGetInfo.call(server, group, level, buf) == NERR_Success
303
- end
304
-
305
- def NetLocalGroupGetMembers(server, group, level, buf, max, entries, total_entries, resume)
306
- NetLocalGroupGetMembers.call(server, group, level, buf, max, entries, total_entries, resume) == NERR_Success
307
- end
308
-
309
- def NetLocalGroupSetInfo(server, group, level, buf, err)
310
- NetLocalGroupSetInfo.call(server, group, level, buf, err) == NERR_Success
311
- end
312
-
313
- def NetLocalGroupSetMembers(server, group, level, buf, total)
314
- NetLocalGroupSetMembers.call(server, group, level, buf, total) == NERR_Success
315
- end
316
-
317
- def NetMessageBufferSend(server, msg, from, buf, bufsize)
318
- NetMessageBufferSend.call(server, msg, from, buf, bufsize) == NERR_Success
319
- end
320
-
321
- def NetMessageNameAdd(server, msg)
322
- NetMessageNameAdd.call(server, msg) == NERR_Success
323
- end
324
-
325
- def NetMessageNameDel(server, msg)
326
- NetMessageNameDel.call(server, msg) == NERR_Success
327
- end
328
-
329
- def NetMessageNameEnum(server, level, buf, max, entries, total_entries, resume)
330
- NetMessageNameEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
331
- end
332
-
333
- def NetMessageNameGetInfo(server, msg, level, buf)
334
- NetMessageNameGetInfo.call(server, msg, level, buf) == NERR_Success
335
- end
336
-
337
- def NetQueryDisplayInformation(server, level, index, entries, max, count, buf)
338
- NetQueryDisplayInformation.call(server, level, index, entries, max, count, buf) == NERR_Success
339
- end
340
-
341
- def NetRemoteComputerSupports(server, level, index, entries, max, count, buf)
342
- NetRemoteComputerSupports.call(server, level, index, entries, max, count, buf) == NERR_Success
343
- end
344
-
345
- def NetRemoteTOD(server, buf)
346
- NetRemoteTOD.call(server, buf) == NERR_Success
347
- end
348
-
349
- def NetRenameMachineInDomain(server, machine, account, password, options)
350
- NetRenameMachineInDomain.call(server, machine, account, password, options) == NERR_Success
351
- end
352
-
353
- def NetScheduleJobAdd(server, buf, job)
354
- NetScheduleJobAdd.call(server, buf, job) == NERR_Success
355
- end
356
-
357
- def NetScheduleJobDel(server, min, max)
358
- NetScheduleJobDel.call(server, min, max) == NERR_Success
359
- end
360
-
361
- def NetScheduleJobEnum(server, buf, max, entries, total_entries, resume)
362
- NetScheduleJobEnum.call(server, buf, max, entries, total_entries, resume) == NERR_Success
363
- end
364
-
365
- def NetScheduleJobGetInfo(server, job, buf)
366
- NetScheduleJobGetInfo.call(server, job, buf) == NERR_Success
367
- end
368
-
369
- def NetServerComputerNameAdd(server, em_domain, em_server)
370
- NetServerComputerNameAdd.call(server, em_domain, em_server) == NERR_Success
371
- end
372
-
373
- def NetServerComputerNameDel(server, em_server)
374
- NetServerComputerNameDel.call(server, em_server) == NERR_Success
375
- end
376
-
377
- def NetServerDiskEnum(server, level, buf, maxlen, entries, total_entries, resume)
378
- NetServerDiskEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
379
- end
380
-
381
- def NetServerEnum(server, level, ptr, maxlen, num, total, stype, domain, handle)
382
- NetServerEnum.call(server, level, ptr, maxlen, num, total, stype, domain, handle) == NERR_Success
383
- end
384
-
385
- def NetServerGetInfo(server, level, buf)
386
- NetServerGetInfo.call(server, level, buf) == NERR_Success
387
- end
388
-
389
- def NetServerSetInfo(server, level, buf, error)
390
- NetServerSetInfo.call(server, level, buf, error) == NERR_Success
391
- end
392
-
393
- def NetServerTransportAdd(server, level, buf)
394
- NetServerTransportAdd.call(server, level, buf) == NERR_Success
395
- end
396
-
397
- def NetServerTransportAddEx(server, level, buf)
398
- NetServerTransportAddEx.call(server, level, buf) == NERR_Success
399
- end
400
-
401
- def NetServerTransportDel(server, level, buf)
402
- NetServerTransportDel.call(server, level, buf) == NERR_Success
403
- end
404
-
405
- def NetServerTransportEnum(server, level, buf, maxlen, entries, total_entries, resume)
406
- NetServerTransportEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
407
- end
408
-
409
- def NetUnjoinDomain(server, account, password, options)
410
- NetUnjoinDomain.call(server, account, password, options) == NERR_Success
411
- end
412
-
413
- def NetUseAdd(server, level, buf, error)
414
- NetUseAdd.call(server, level, buf, error) == NERR_Success
415
- end
416
-
417
- def NetUseDel(server, name, conn)
418
- NetUseDel.call(server, name, conn) == NERR_Success
419
- end
420
-
421
- def NetUseEnum(server, level, buf, max, entries, total_entries, resume)
422
- NetUseEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
423
- end
424
-
425
- def NetUseGetInfo(server, name, level, buf)
426
- NetUseGetInfo.call(server, name, level, buf) == NERR_Success
427
- end
428
-
429
- def NetUserAdd(server, level, buf, error)
430
- NetUserAdd.call(server, level, buf, error) == NERR_Success
431
- end
432
-
433
- def NetUserChangePassword(domain, user, old, new)
434
- NetUserChangePassword.call(domain, user, old, new) == NERR_Success
435
- end
436
-
437
- def NetUserDel(server, user)
438
- NetUserDel.call(server, user) == NERR_Success
439
- end
440
-
441
- def NetUserEnum(server, level, filter, buf, max, entries, total_entries, resume)
442
- NetUserEnum.call(server, level, filter, buf, max, entries, total_entries, resume) == NERR_Success
443
- end
444
-
445
- def NetUserGetGroups(server, user, level, buf, max, entries, total_entries)
446
- NetUserGetGroups.call(server, user, level, buf, max, entries, total_entries) == NERR_Success
447
- end
448
-
449
- def NetUserGetInfo(server, user, level, buf)
450
- NetUserGetInfo.call(server, user, level, buf) == NERR_Success
451
- end
452
-
453
- def NetUserGetLocalGroups(server, user, level, flags, buf, max, entries, total_entries)
454
- NetUserGetLocalGroups.call(server, user, level, flags, buf, max, entries, total_entries) == NERR_Success
455
- end
456
-
457
- def NetUserModalsGet(server, level, buf)
458
- NetUserModalsGet.call(server, level, buf) == NERR_Success
459
- end
460
-
461
- def NetUserModalsSet(server, level, buf, error)
462
- NetUserModalsSet.call(server, level, buf, error) == NERR_Success
463
- end
464
-
465
- def NetUserSetGroups(server, user, level, buf, num)
466
- NetUserSetGroups.call(server, user, level, buf, num) == NERR_Success
467
- end
468
-
469
- def NetUserSetInfo(server, user, level, buf, error)
470
- NetUserSetInfo.call(server, user, level, buf, error) == NERR_Success
471
- end
472
-
473
- def NetValidateName(server, name, account, password, name_type)
474
- NetValidateName.call(server, name, account, password, name_type) == NERR_Success
475
- end
476
-
477
- def NetWkstaGetInfo(server, level, buf)
478
- NetWkstaGetInfo.call(server, level, buf) == NERR_Success
479
- end
480
-
481
- def NetWkstaSetInfo(server, level, buf, error)
482
- NetWkstaSetInfo.call(server, level, buf, error) == NERR_Success
483
- end
484
-
485
- def NetWkstaTransportAdd(server, level, buf, error)
486
- NetWkstaTransportAdd.call(server, level, buf, error) == NERR_Success
487
- end
488
-
489
- def NetWkstaTransportDel(server, name, cond)
490
- NetWkstaTransportDel.call(server, name, cond) == NERR_Success
491
- end
492
-
493
- def NetWkstaTransportEnum(server, level, buf, maxlen, entries, total_entries, resume)
494
- NetWkstaTransportEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
495
- end
496
-
497
- def NetWkstaUserEnum(server, level, buf, maxlen, entries, total_entries, resume)
498
- NetWkstaUserEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
499
- end
500
-
501
- def NetWkstaUserGetInfo(res, level, buf)
502
- NetWkstaUserGetInfo.call(res, level, buf) == NERR_Success
503
- end
504
-
505
- def NetWkstaUserSetInfo(res, level, buf, error)
506
- NetWkstaUserSetInfo.call(res, level, buf, error) == NERR_Success
507
- end
508
-
509
- # Windows XP or later
510
- begin
511
- def GetNetScheduleAccountInformation(server, num_chars, chars)
512
- GetNetScheduleAccountInformation.call(server, num_chars, chars) == NERR_Success
513
- end
514
-
515
- def SetNetScheduleAccountInformation(server, account, password)
516
- SetNetScheduleAccountInformation.call(server, account, password) == NERR_Success
517
- end
518
- rescue Win32::API::LoadLibraryError
519
- # Do nothing. It's up to you to check for their existence.
520
- end
521
- end
522
- end
523
- end
1
+ require 'windows/api'
2
+
3
+ # I don't use the Boolean flag for the return types of these methods because
4
+ # they succeed, not fail, if the return value is 0.
5
+ #
6
+ module Windows
7
+ module Network
8
+ module Management
9
+ API.auto_namespace = 'Windows::Network::Management'
10
+ API.auto_constant = true
11
+ API.auto_method = false
12
+ API.auto_unicode = false
13
+
14
+ private
15
+
16
+ NERR_Success = 0
17
+ NERR_BASE = 2100
18
+ NERR_NetNotStarted = NERR_BASE + 2
19
+ NERR_UnknownServer = NERR_BASE + 3
20
+ NERR_ShareMem = NERR_BASE + 4
21
+ NERR_NoNetworkResource = NERR_BASE + 5
22
+ NERR_RemoteOnly = NERR_BASE + 6
23
+ NERR_DevNotRedirected = NERR_BASE + 7
24
+ NERR_AlreadyLoggedOn = NERR_BASE + 100
25
+ NERR_NotLoggedOn = NERR_BASE + 101
26
+ NERR_BadUsername = NERR_BASE + 102
27
+ NERR_BadPassword = NERR_BASE + 103
28
+ NERR_UnableToAddName_W = NERR_BASE + 104
29
+ NERR_UnableToAddName_F = NERR_BASE + 105
30
+ NERR_UnableToDelName_W = NERR_BASE + 106
31
+ NERR_UnableToDelName_F = NERR_BASE + 107
32
+ NERR_LogonsPaused = NERR_BASE + 109
33
+ NERR_LogonServerConflict = NERR_BASE + 110
34
+ NERR_LogonNoUserPath = NERR_BASE + 111
35
+ NERR_LogonScriptError = NERR_BASE + 112
36
+ NERR_StandaloneLogon = NERR_BASE + 114
37
+ NERR_LogonServerNotFound = NERR_BASE + 115
38
+ NERR_LogonDomainExists = NERR_BASE + 116
39
+ NERR_NonValidatedLogon = NERR_BASE + 117
40
+ NERR_ACFNotFound = NERR_BASE + 119
41
+ NERR_GroupNotFound = NERR_BASE + 120
42
+ NERR_UserNotFound = NERR_BASE + 121
43
+ NERR_ResourceNotFound = NERR_BASE + 122
44
+ NERR_GroupExists = NERR_BASE + 123
45
+ NERR_UserExists = NERR_BASE + 124
46
+ NERR_ResourceExists = NERR_BASE + 125
47
+ NERR_NotPrimary = NERR_BASE + 126
48
+ NERR_ACFNotLoaded = NERR_BASE + 127
49
+ NERR_ACFNoRoom = NERR_BASE + 128
50
+ NERR_ACFFileIOFail = NERR_BASE + 129
51
+ NERR_ACFTooManyLists = NERR_BASE + 130
52
+ NERR_UserLogon = NERR_BASE + 131
53
+ NERR_ACFNoParent = NERR_BASE + 132
54
+ NERR_CanNotGrowSegment = NERR_BASE + 133
55
+ NERR_SpeGroupOp = NERR_BASE + 134
56
+ NERR_NotInCache = NERR_BASE + 135
57
+ NERR_UserInGroup = NERR_BASE + 136
58
+ NERR_UserNotInGroup = NERR_BASE + 137
59
+ NERR_AccountUndefined = NERR_BASE + 138
60
+ NERR_AccountExpired = NERR_BASE + 139
61
+ NERR_InvalidWorkstation = NERR_BASE + 140
62
+ NERR_InvalidLogonHours = NERR_BASE + 141
63
+ NERR_PasswordExpired = NERR_BASE + 142
64
+ NERR_PasswordCantChange = NERR_BASE + 143
65
+ NERR_PasswordHistConflict = NERR_BASE + 144
66
+ NERR_PasswordTooShort = NERR_BASE + 145
67
+ NERR_PasswordTooRecent = NERR_BASE + 146
68
+ NERR_InvalidDatabase = NERR_BASE + 147
69
+ NERR_DatabaseUpToDate = NERR_BASE + 148
70
+ NERR_SyncRequired = NERR_BASE + 149
71
+ NERR_UseNotFound = NERR_BASE + 150
72
+ NERR_BadAsgType = NERR_BASE + 151
73
+ NERR_DeviceIsShared = NERR_BASE + 152
74
+
75
+ MAX_PREFERRED_LENGTH = 0xFFFFFFFF
76
+
77
+ # Taken from LMServer.h
78
+ SV_TYPE_WORKSTATION = 0x00000001
79
+ SV_TYPE_SERVER = 0x00000002
80
+ SV_TYPE_SQLSERVER = 0x00000004
81
+ SV_TYPE_DOMAIN_CTRL = 0x00000008
82
+ SV_TYPE_DOMAIN_BAKCTRL = 0x00000010
83
+ SV_TYPE_TIME_SOURCE = 0x00000020
84
+ SV_TYPE_AFP = 0x00000040
85
+ SV_TYPE_NOVELL = 0x00000080
86
+ SV_TYPE_DOMAIN_MEMBER = 0x00000100
87
+ SV_TYPE_PRINTQ_SERVER = 0x00000200
88
+ SV_TYPE_DIALIN_SERVER = 0x00000400
89
+ SV_TYPE_XENIX_SERVER = 0x00000800
90
+ SV_TYPE_SERVER_UNIX = SV_TYPE_XENIX_SERVER
91
+ SV_TYPE_NT = 0x00001000
92
+ SV_TYPE_WFW = 0x00002000
93
+ SV_TYPE_SERVER_MFPN = 0x00004000
94
+ SV_TYPE_SERVER_NT = 0x00008000
95
+ SV_TYPE_POTENTIAL_BROWSER = 0x00010000
96
+ SV_TYPE_BACKUP_BROWSER = 0x00020000
97
+ SV_TYPE_MASTER_BROWSER = 0x00040000
98
+ SV_TYPE_DOMAIN_MASTER = 0x00080000
99
+ SV_TYPE_SERVER_OSF = 0x00100000
100
+ SV_TYPE_SERVER_VMS = 0x00200000
101
+ SV_TYPE_WINDOWS = 0x00400000
102
+ SV_TYPE_DFS = 0x00800000
103
+ SV_TYPE_CLUSTER_NT = 0x01000000
104
+ SV_TYPE_TERMINALSERVER = 0x02000000
105
+ SV_TYPE_CLUSTER_VS_NT = 0x04000000
106
+ SV_TYPE_DCE = 0x10000000
107
+ SV_TYPE_ALTERNATE_XPORT = 0x20000000
108
+ SV_TYPE_LOCAL_LIST_ONLY = 0x40000000
109
+ SV_TYPE_DOMAIN_ENUM = 0x80000000
110
+ SV_TYPE_ALL = 0xFFFFFFFF
111
+
112
+ API.new('NetAlertRaise', 'SPL', 'L', 'netapi32')
113
+ API.new('NetAlertRaiseEx', 'SPLS', 'L', 'netapi32')
114
+ API.new('NetApiBufferAllocate', 'LP', 'L', 'netapi32')
115
+ API.new('NetApiBufferFree', 'P', 'L', 'netapi32')
116
+ API.new('NetApiBufferReallocate', 'PLP', 'L', 'netapi32')
117
+ API.new('NetApiBufferSize', 'PP', 'L', 'netapi32')
118
+ API.new('NetGetAnyDCName', 'SSP', 'L', 'netapi32')
119
+ API.new('NetGetDCName', 'SSP', 'L', 'netapi32')
120
+ API.new('NetGetDisplayInformationIndex', 'SLPP', 'L', 'netapi32')
121
+ API.new('NetGetJoinableOUs', 'SSSSPP', 'L', 'netapi32')
122
+ API.new('NetGetJoinInformation', 'SPP', 'L', 'netapi32')
123
+ API.new('NetGroupAdd', 'SLPP', 'L', 'netapi32')
124
+ API.new('NetGroupAddUser', 'SSS', 'L', 'netapi32')
125
+ API.new('NetGroupDel', 'SS', 'L', 'netapi32')
126
+ API.new('NetGroupDelUser', 'SSS', 'L', 'netapi32')
127
+ API.new('NetGroupEnum', 'SLPLPPP', 'L', 'netapi32')
128
+ API.new('NetGroupGetInfo', 'SSLP', 'L', 'netapi32')
129
+ API.new('NetGroupGetUsers', 'SSLPLPPP', 'L', 'netapi32')
130
+ API.new('NetGroupSetInfo', 'SSLPP', 'L', 'netapi32')
131
+ API.new('NetGroupSetUsers', 'SSLPL', 'L', 'netapi32')
132
+ API.new('NetJoinDomain', 'SSSSSL', 'L', 'netapi32')
133
+ API.new('NetLocalGroupAdd', 'SLPP', 'L', 'netapi32')
134
+ API.new('NetLocalGroupAddMembers', 'SSLPL', 'L', 'netapi32')
135
+ API.new('NetLocalGroupDel', 'SS', 'L', 'netapi32')
136
+ API.new('NetLocalGroupDelMembers', 'SSLPL', 'L', 'netapi32')
137
+ API.new('NetLocalGroupEnum', 'SLPLPPP', 'L', 'netapi32')
138
+ API.new('NetLocalGroupGetInfo', 'SSLP', 'L', 'netapi32')
139
+ API.new('NetLocalGroupGetMembers', 'SSLPLPPP', 'L', 'netapi32')
140
+ API.new('NetLocalGroupSetInfo', 'SSLPP', 'L', 'netapi32')
141
+ API.new('NetLocalGroupSetMembers', 'SSLPP', 'L', 'netapi32')
142
+ API.new('NetMessageBufferSend', 'SSSPL', 'L', 'netapi32')
143
+ API.new('NetMessageNameAdd', 'SS', 'L', 'netapi32')
144
+ API.new('NetMessageNameDel', 'SS', 'L', 'netapi32')
145
+ API.new('NetMessageNameEnum', 'SLPLPPP', 'L', 'netapi32')
146
+ API.new('NetMessageNameGetInfo', 'SSLP', 'L', 'netapi32')
147
+ API.new('NetQueryDisplayInformation', 'SLLLLPP', 'L', 'netapi32')
148
+ API.new('NetRemoteComputerSupports', 'SLP', 'L', 'netapi32')
149
+ API.new('NetRemoteTOD', 'SP', 'L', 'netapi32')
150
+ API.new('NetRenameMachineInDomain', 'SSSSL', 'L', 'netapi32')
151
+ API.new('NetScheduleJobAdd', 'SPP', 'L', 'netapi32')
152
+ API.new('NetScheduleJobDel', 'SLL', 'L', 'netapi32')
153
+ API.new('NetScheduleJobEnum', 'SPLPPP', 'L', 'netapi32')
154
+ API.new('NetScheduleJobGetInfo', 'SLP', 'L', 'netapi32')
155
+ API.new('NetServerComputerNameAdd', 'SSS', 'L', 'netapi32')
156
+ API.new('NetServerComputerNameDel', 'SS', 'L', 'netapi32')
157
+ API.new('NetServerDiskEnum', 'SLPLPPP', 'L', 'netapi32')
158
+ API.new('NetServerEnum', 'SLPLPPLPP', 'L', 'netapi32')
159
+ API.new('NetServerGetInfo', 'SLP', 'L', 'netapi32')
160
+ API.new('NetServerSetInfo', 'SLPP', 'L', 'netapi32')
161
+ API.new('NetServerTransportAdd', 'SLP', 'L', 'netapi32')
162
+ API.new('NetServerTransportAddEx', 'SLP', 'L', 'netapi32')
163
+ API.new('NetServerTransportDel', 'SLP', 'L', 'netapi32')
164
+ API.new('NetServerTransportEnum', 'SLPLPPP', 'L', 'netapi32')
165
+ API.new('NetUnjoinDomain', 'SSSL', 'L', 'netapi32')
166
+ API.new('NetUseAdd', 'SLPP', 'L', 'netapi32')
167
+ API.new('NetUseDel', 'SSL', 'L', 'netapi32')
168
+ API.new('NetUseEnum', 'SLPLPPP', 'L', 'netapi32')
169
+ API.new('NetUseGetInfo', 'SSLP', 'L', 'netapi32')
170
+ API.new('NetUserAdd', 'SLPP', 'L', 'netapi32')
171
+ API.new('NetUserChangePassword', 'SSSS', 'L', 'netapi32')
172
+ API.new('NetUserDel', 'SS', 'L', 'netapi32')
173
+ API.new('NetUserEnum', 'SLLPLPPP', 'L', 'netapi32')
174
+ API.new('NetUserGetGroups', 'SSLPLPP', 'L', 'netapi32')
175
+ API.new('NetUserGetInfo', 'SSLP', 'L', 'netapi32')
176
+ API.new('NetUserGetLocalGroups', 'SSLLPLPP', 'L', 'netapi32')
177
+ API.new('NetUserModalsGet', 'SLP', 'L', 'netapi32')
178
+ API.new('NetUserModalsSet', 'SLPP', 'L', 'netapi32')
179
+ API.new('NetUserSetGroups', 'SSLPL', 'L', 'netapi32')
180
+ API.new('NetUserSetInfo', 'SSLPP', 'L', 'netapi32')
181
+ API.new('NetValidateName', 'SSSSP', 'L', 'netapi32')
182
+ API.new('NetWkstaGetInfo', 'SLP', 'L', 'netapi32')
183
+ API.new('NetWkstaSetInfo', 'SLPP', 'L', 'netapi32')
184
+ API.new('NetWkstaTransportAdd', 'SLPP', 'L', 'netapi32')
185
+ API.new('NetWkstaTransportDel', 'SSL', 'L', 'netapi32')
186
+ API.new('NetWkstaTransportEnum', 'SLPLPPP', 'L', 'netapi32')
187
+ API.new('NetWkstaUserEnum', 'SLPLPPP', 'L', 'netapi32')
188
+ API.new('NetWkstaUserGetInfo', 'PLP', 'L', 'netapi32')
189
+ API.new('NetWkstaUserSetInfo', 'PPLP', 'L', 'netapi32')
190
+
191
+ # Windows XP or later.
192
+ begin
193
+ API.new('GetNetScheduleAccountInformation', 'PLP', 'L', 'mstask')
194
+ API.new('SetNetScheduleAccountInformation', 'PPP', 'L', 'netapi32')
195
+ rescue Win32::API::LoadLibraryError
196
+ # Do nothing. Not supported on current platform.
197
+ end
198
+
199
+ def NetAlertRaise(name, buf, bufsize)
200
+ NetAlertRaise.call(name, buf, bufsize) == NERR_Success
201
+ end
202
+
203
+ def NetAlertRaiseEx(name, data, size, service)
204
+ NetAlertRaiseEx.call(name, data, size, service) == NERR_Success
205
+ end
206
+
207
+ def NetApiBufferAllocate(num_bytes, buf)
208
+ NetApiBufferAllocate.call(num_bytes, buf) == NERR_Success
209
+ end
210
+
211
+ def NetApiBufferFree(buf)
212
+ NetApiBufferFree.call(buf) == NERR_Success
213
+ end
214
+
215
+ def NetApiBufferReallocate(old_buf, count, new_buf)
216
+ NetApiBufferReallocate.call(old_buf, count, new_buf) == NERR_Success
217
+ end
218
+
219
+ def NetApiBufferSize(buf, count)
220
+ NetApiBufferSize.call(buf, count) == NERR_Success
221
+ end
222
+
223
+ def NetGetAnyDCName(server, domain, buf)
224
+ NetGetAnyDCName.call(server, domain, buf) == NERR_Success
225
+ end
226
+
227
+ def NetGetDCName(server, domain, buf)
228
+ NetGetDCName.call(server, domain, buf) == NERR_Success
229
+ end
230
+
231
+ def NetGetDisplayInformationIndex(server, level, prefix, index)
232
+ NetGetDisplayInformationIndex.call(server, level, prefix, index) == NERR_Success
233
+ end
234
+
235
+ def NetGetJoinableOUs(server, domain, account, password, count, ous)
236
+ NetGetJoinableOUs.call(server, domain, account, password, count, ous) == NERR_Success
237
+ end
238
+
239
+ def NetGetJoinInformation(server, buf, buf_type)
240
+ NetGetJoinInformation.call(server, buf, buf_type) == NERR_Success
241
+ end
242
+
243
+ def NetGroupAdd(server, level, buf, err)
244
+ NetGroupAdd.call(server, level, buf, err).call == NERR_Success
245
+ end
246
+
247
+ def NetGroupAddUser(server, group, user)
248
+ NetGroupAddUser.call(server, group, user) == NERR_Success
249
+ end
250
+
251
+ def NetGroupDel(server, group)
252
+ NetGroupDel.call(server, group) == NERR_Success
253
+ end
254
+
255
+ def NetGroupDelUser(server, group, user)
256
+ NetGroupDelUser.call(server, group, user) == NERR_Success
257
+ end
258
+
259
+ def NetGroupEnum(server, level, buf, max, entries, total_entries, resume)
260
+ NetGroupEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
261
+ end
262
+
263
+ def NetGroupGetInfo(server, group, level, buf)
264
+ NetGroupGetInfo.call(server, group, level, buf) == NERR_Success
265
+ end
266
+
267
+ def NetGroupGetUsers(server, group, level, buf, max, entries, total_entries, resume)
268
+ NetGroupGetUsers.call(server, group, level, buf, max, entries, total_entries, resume) == NERR_Success
269
+ end
270
+
271
+ def NetGroupSetInfo(server, group, level, buf, err)
272
+ NetGroupSetInfo.call(server, group, level, buf, err) == NERR_Success
273
+ end
274
+
275
+ def NetGroupSetUsers(server, group, level, buf, total)
276
+ NetGroupSetUsers.call(server, group, level, buf, total) == NERR_Success
277
+ end
278
+
279
+ def NetJoinDomain(server, domain, account_ou, account, password, opts)
280
+ NetJoinDomain.call(server, domain, account_ou, account, password, opts) == NERR_Success
281
+ end
282
+
283
+ def NetLocalGroupAdd(server, level, buf, err)
284
+ NetLocalGroupAdd.call(server, level, buf, err) == NERR_Success
285
+ end
286
+
287
+ def NetLocalGroupAddMembers(server, group, level, buf, total)
288
+ NetLocalGroupAddMembers.call(server, group, level, buf, total) == NERR_Success
289
+ end
290
+
291
+ def NetLocalGroupDel(server, group)
292
+ NetLocalGroupDel.call(server, group) == NERR_Success
293
+ end
294
+
295
+ def NetLocalGroupDelMembers(server, group, level, buf, total)
296
+ NetLocalGroupDelMembers.call(server, group, level, buf, total) == NERR_Success
297
+ end
298
+
299
+ def NetLocalGroupEnum(server, level, buf, max, entries, total_entries, resume)
300
+ NetLocalGroupEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
301
+ end
302
+
303
+ def NetLocalGroupGetInfo(server, group, level, buf)
304
+ NetLocalGroupGetInfo.call(server, group, level, buf) == NERR_Success
305
+ end
306
+
307
+ def NetLocalGroupGetMembers(server, group, level, buf, max, entries, total_entries, resume)
308
+ NetLocalGroupGetMembers.call(server, group, level, buf, max, entries, total_entries, resume) == NERR_Success
309
+ end
310
+
311
+ def NetLocalGroupSetInfo(server, group, level, buf, err)
312
+ NetLocalGroupSetInfo.call(server, group, level, buf, err) == NERR_Success
313
+ end
314
+
315
+ def NetLocalGroupSetMembers(server, group, level, buf, total)
316
+ NetLocalGroupSetMembers.call(server, group, level, buf, total) == NERR_Success
317
+ end
318
+
319
+ def NetMessageBufferSend(server, msg, from, buf, bufsize)
320
+ NetMessageBufferSend.call(server, msg, from, buf, bufsize) == NERR_Success
321
+ end
322
+
323
+ def NetMessageNameAdd(server, msg)
324
+ NetMessageNameAdd.call(server, msg) == NERR_Success
325
+ end
326
+
327
+ def NetMessageNameDel(server, msg)
328
+ NetMessageNameDel.call(server, msg) == NERR_Success
329
+ end
330
+
331
+ def NetMessageNameEnum(server, level, buf, max, entries, total_entries, resume)
332
+ NetMessageNameEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
333
+ end
334
+
335
+ def NetMessageNameGetInfo(server, msg, level, buf)
336
+ NetMessageNameGetInfo.call(server, msg, level, buf) == NERR_Success
337
+ end
338
+
339
+ def NetQueryDisplayInformation(server, level, index, entries, max, count, buf)
340
+ NetQueryDisplayInformation.call(server, level, index, entries, max, count, buf) == NERR_Success
341
+ end
342
+
343
+ def NetRemoteComputerSupports(server, level, index, entries, max, count, buf)
344
+ NetRemoteComputerSupports.call(server, level, index, entries, max, count, buf) == NERR_Success
345
+ end
346
+
347
+ def NetRemoteTOD(server, buf)
348
+ NetRemoteTOD.call(server, buf) == NERR_Success
349
+ end
350
+
351
+ def NetRenameMachineInDomain(server, machine, account, password, options)
352
+ NetRenameMachineInDomain.call(server, machine, account, password, options) == NERR_Success
353
+ end
354
+
355
+ def NetScheduleJobAdd(server, buf, job)
356
+ NetScheduleJobAdd.call(server, buf, job) == NERR_Success
357
+ end
358
+
359
+ def NetScheduleJobDel(server, min, max)
360
+ NetScheduleJobDel.call(server, min, max) == NERR_Success
361
+ end
362
+
363
+ def NetScheduleJobEnum(server, buf, max, entries, total_entries, resume)
364
+ NetScheduleJobEnum.call(server, buf, max, entries, total_entries, resume) == NERR_Success
365
+ end
366
+
367
+ def NetScheduleJobGetInfo(server, job, buf)
368
+ NetScheduleJobGetInfo.call(server, job, buf) == NERR_Success
369
+ end
370
+
371
+ def NetServerComputerNameAdd(server, em_domain, em_server)
372
+ NetServerComputerNameAdd.call(server, em_domain, em_server) == NERR_Success
373
+ end
374
+
375
+ def NetServerComputerNameDel(server, em_server)
376
+ NetServerComputerNameDel.call(server, em_server) == NERR_Success
377
+ end
378
+
379
+ def NetServerDiskEnum(server, level, buf, maxlen, entries, total_entries, resume)
380
+ NetServerDiskEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
381
+ end
382
+
383
+ def NetServerEnum(server, level, ptr, maxlen, num, total, stype, domain, handle)
384
+ NetServerEnum.call(server, level, ptr, maxlen, num, total, stype, domain, handle) == NERR_Success
385
+ end
386
+
387
+ def NetServerGetInfo(server, level, buf)
388
+ NetServerGetInfo.call(server, level, buf) == NERR_Success
389
+ end
390
+
391
+ def NetServerSetInfo(server, level, buf, error)
392
+ NetServerSetInfo.call(server, level, buf, error) == NERR_Success
393
+ end
394
+
395
+ def NetServerTransportAdd(server, level, buf)
396
+ NetServerTransportAdd.call(server, level, buf) == NERR_Success
397
+ end
398
+
399
+ def NetServerTransportAddEx(server, level, buf)
400
+ NetServerTransportAddEx.call(server, level, buf) == NERR_Success
401
+ end
402
+
403
+ def NetServerTransportDel(server, level, buf)
404
+ NetServerTransportDel.call(server, level, buf) == NERR_Success
405
+ end
406
+
407
+ def NetServerTransportEnum(server, level, buf, maxlen, entries, total_entries, resume)
408
+ NetServerTransportEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
409
+ end
410
+
411
+ def NetUnjoinDomain(server, account, password, options)
412
+ NetUnjoinDomain.call(server, account, password, options) == NERR_Success
413
+ end
414
+
415
+ def NetUseAdd(server, level, buf, error)
416
+ NetUseAdd.call(server, level, buf, error) == NERR_Success
417
+ end
418
+
419
+ def NetUseDel(server, name, conn)
420
+ NetUseDel.call(server, name, conn) == NERR_Success
421
+ end
422
+
423
+ def NetUseEnum(server, level, buf, max, entries, total_entries, resume)
424
+ NetUseEnum.call(server, level, buf, max, entries, total_entries, resume) == NERR_Success
425
+ end
426
+
427
+ def NetUseGetInfo(server, name, level, buf)
428
+ NetUseGetInfo.call(server, name, level, buf) == NERR_Success
429
+ end
430
+
431
+ def NetUserAdd(server, level, buf, error)
432
+ NetUserAdd.call(server, level, buf, error) == NERR_Success
433
+ end
434
+
435
+ def NetUserChangePassword(domain, user, old, new)
436
+ NetUserChangePassword.call(domain, user, old, new) == NERR_Success
437
+ end
438
+
439
+ def NetUserDel(server, user)
440
+ NetUserDel.call(server, user) == NERR_Success
441
+ end
442
+
443
+ def NetUserEnum(server, level, filter, buf, max, entries, total_entries, resume)
444
+ NetUserEnum.call(server, level, filter, buf, max, entries, total_entries, resume) == NERR_Success
445
+ end
446
+
447
+ def NetUserGetGroups(server, user, level, buf, max, entries, total_entries)
448
+ NetUserGetGroups.call(server, user, level, buf, max, entries, total_entries) == NERR_Success
449
+ end
450
+
451
+ def NetUserGetInfo(server, user, level, buf)
452
+ NetUserGetInfo.call(server, user, level, buf) == NERR_Success
453
+ end
454
+
455
+ def NetUserGetLocalGroups(server, user, level, flags, buf, max, entries, total_entries)
456
+ NetUserGetLocalGroups.call(server, user, level, flags, buf, max, entries, total_entries) == NERR_Success
457
+ end
458
+
459
+ def NetUserModalsGet(server, level, buf)
460
+ NetUserModalsGet.call(server, level, buf) == NERR_Success
461
+ end
462
+
463
+ def NetUserModalsSet(server, level, buf, error)
464
+ NetUserModalsSet.call(server, level, buf, error) == NERR_Success
465
+ end
466
+
467
+ def NetUserSetGroups(server, user, level, buf, num)
468
+ NetUserSetGroups.call(server, user, level, buf, num) == NERR_Success
469
+ end
470
+
471
+ def NetUserSetInfo(server, user, level, buf, error)
472
+ NetUserSetInfo.call(server, user, level, buf, error) == NERR_Success
473
+ end
474
+
475
+ def NetValidateName(server, name, account, password, name_type)
476
+ NetValidateName.call(server, name, account, password, name_type) == NERR_Success
477
+ end
478
+
479
+ def NetWkstaGetInfo(server, level, buf)
480
+ NetWkstaGetInfo.call(server, level, buf) == NERR_Success
481
+ end
482
+
483
+ def NetWkstaSetInfo(server, level, buf, error)
484
+ NetWkstaSetInfo.call(server, level, buf, error) == NERR_Success
485
+ end
486
+
487
+ def NetWkstaTransportAdd(server, level, buf, error)
488
+ NetWkstaTransportAdd.call(server, level, buf, error) == NERR_Success
489
+ end
490
+
491
+ def NetWkstaTransportDel(server, name, cond)
492
+ NetWkstaTransportDel.call(server, name, cond) == NERR_Success
493
+ end
494
+
495
+ def NetWkstaTransportEnum(server, level, buf, maxlen, entries, total_entries, resume)
496
+ NetWkstaTransportEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
497
+ end
498
+
499
+ def NetWkstaUserEnum(server, level, buf, maxlen, entries, total_entries, resume)
500
+ NetWkstaUserEnum.call(server, level, buf, maxlen, entries, total_entries, resume) == NERR_Success
501
+ end
502
+
503
+ def NetWkstaUserGetInfo(res, level, buf)
504
+ NetWkstaUserGetInfo.call(res, level, buf) == NERR_Success
505
+ end
506
+
507
+ def NetWkstaUserSetInfo(res, level, buf, error)
508
+ NetWkstaUserSetInfo.call(res, level, buf, error) == NERR_Success
509
+ end
510
+
511
+ # Windows XP or later
512
+ begin
513
+ def GetNetScheduleAccountInformation(server, num_chars, chars)
514
+ GetNetScheduleAccountInformation.call(server, num_chars, chars) == NERR_Success
515
+ end
516
+
517
+ def SetNetScheduleAccountInformation(server, account, password)
518
+ SetNetScheduleAccountInformation.call(server, account, password) == NERR_Success
519
+ end
520
+ rescue Win32::API::LoadLibraryError
521
+ # Do nothing. It's up to you to check for their existence.
522
+ end
523
+ end
524
+ end
525
+ end