windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/at/client/atstub.c

303 lines
6.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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