303 lines
6.4 KiB
C
303 lines
6.4 KiB
C
/*++
|
||
|
||
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
|
||
|