1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
|
/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
atstub.c
Abstract:
Client stubs of the Schedule service APIs.
Author:
Vladimir Z. Vulovic (vladimv) 06 - November - 1992
Environment:
User Mode - Win32
Revision History:
06-Nov-1992 vladimv
Created
--*/
#include "atclient.h"
#undef IF_DEBUG // avoid wsclient.h vs. debuglib.h conflicts.
#include <debuglib.h> // IF_DEBUG() (needed by netrpc.h).
#include <lmserver.h>
#include <lmsvc.h>
#include <netlib.h> // NetpServiceIsStarted() (needed by netrpc.h).
#include <netrpc.h> // NET_REMOTE macros.
#include <lmstats.h>
NET_API_STATUS
NetScheduleJobAdd(
IN LPCWSTR ServerName OPTIONAL,
IN LPBYTE Buffer,
OUT LPDWORD pJobId
)
/*++
Routine Description:
This is the DLL entrypoint for NetScheduleJobAdd. This API adds a job
to the schedule.
Arguments:
ServerName - Pointer to a string containing the name of the computer
that is to execute the API function.
Buffer - Pointer to a buffer containing information about the job
pJobId - Pointer to JobId of a newly added job.
Return Value:
NET_API_STATUS
--*/
{
NET_API_STATUS status;
NET_REMOTE_TRY_RPC
//
// Try RPC (local or remote) version of API.
//
status = NetrJobAdd(
ServerName,
(LPAT_INFO)Buffer,
pJobId
);
NET_REMOTE_RPC_FAILED(
"NetScheduleJobAdd",
ServerName,
status,
NET_REMOTE_FLAG_NORMAL,
SERVICE_SCHEDULE
)
status = ERROR_NOT_SUPPORTED;
NET_REMOTE_END
return( status);
} // NetScheduleJobAdd
NET_API_STATUS
NetScheduleJobDel(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD MinJobId,
IN DWORD MaxJobId
)
/*++
Routine Description:
This is the DLL entrypoint for NetScheduleJobDel. This API removes
from the schedule all jobs whose job ids are:
- greater than or equal to the minimum job id
and
- less than or equal to the maximum job id
Arguments:
ServerName - Pointer to a string containing the name of the computer
that is to execute the API function.
MinJobId - minumum job id
MaxJobId - maxumum job id
Return Value:
NET_API_STATUS
--*/
{
NET_API_STATUS status;
NET_REMOTE_TRY_RPC
//
// Try RPC (local or remote) version of API.
//
status = NetrJobDel(
ServerName,
MinJobId,
MaxJobId
);
NET_REMOTE_RPC_FAILED(
"NetScheduleJobDel",
ServerName,
status,
NET_REMOTE_FLAG_NORMAL,
SERVICE_SCHEDULE
)
status = ERROR_NOT_SUPPORTED;
NET_REMOTE_END
return( status);
} // NetScheduleJobDel
NET_API_STATUS
NetScheduleJobEnum(
IN LPCWSTR ServerName OPTIONAL,
OUT LPBYTE * PointerToBuffer,
IN DWORD PreferredMaximumLength,
OUT LPDWORD EntriesRead,
OUT LPDWORD TotalEntries,
IN OUT LPDWORD ResumeHandle
)
/*++
Routine Description:
This is the DLL entrypoint for NetScheduleJobEnum. This API enumarates
all jobs in the schedule.
Arguments:
ServerName - Pointer to a string containing the name of the computer
that is to execute the API function.
PointerToBuffer - Pointer to location where pointer to returned data will
be stored
PreferredMaximumLength - Indicates a maximum size limit that the caller
will allow for the return buffer.
EntriesRead - A pointer to the location where the number of entries
(data structures)read is to be returned.
TotalEntries - A pointer to the location which upon return indicates
the total number of entries in the table.
ResumeHandle - Pointer to a value that indicates where to resume
enumerating data.
Return Value:
NET_API_STATUS
--*/
{
NET_API_STATUS status;
AT_ENUM_CONTAINER EnumContainer;
EnumContainer.EntriesRead = 0;
EnumContainer.Buffer = NULL;
NET_REMOTE_TRY_RPC
//
// Try RPC (local or remote) version of API.
//
status = NetrJobEnum(
ServerName,
&EnumContainer,
PreferredMaximumLength,
TotalEntries,
ResumeHandle
);
if ( status == NERR_Success || status == ERROR_MORE_DATA) {
*EntriesRead = EnumContainer.EntriesRead;
*PointerToBuffer = (LPBYTE)EnumContainer.Buffer;
}
NET_REMOTE_RPC_FAILED(
"NetScheduleJobEnum",
ServerName,
status,
NET_REMOTE_FLAG_NORMAL,
SERVICE_SCHEDULE
)
status = ERROR_NOT_SUPPORTED;
NET_REMOTE_END
return( status);
} // NetScheduleJobEnum
NET_API_STATUS
NetScheduleJobGetInfo(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD JobId,
OUT LPBYTE * PointerToBuffer
)
/*++
Routine Description:
This is the DLL entrypoint for NetScheduleGetInfo. This API obtains
information about a particular job in the schedule.
Arguments:
ServerName - Pointer to a string containing the name of the computer
that is to execute the API function.
JobId - Id of job of interest.
PointerToBuffer - Pointer to location where pointer to returned data will
be stored
Return Value:
NET_API_STATUS
--*/
{
NET_API_STATUS status;
NET_REMOTE_TRY_RPC
//
// Try RPC (local or remote) version of API.
//
status = NetrJobGetInfo(
ServerName,
JobId,
(LPAT_INFO *)PointerToBuffer
);
NET_REMOTE_RPC_FAILED(
"NetScheduleJobGetInfo",
ServerName,
status,
NET_REMOTE_FLAG_NORMAL,
SERVICE_SCHEDULE
)
status = ERROR_NOT_SUPPORTED;
NET_REMOTE_END
return( status);
} // NetScheduleJobGetInfo
|