/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: NetAPI DLL * FILE: reactos/dll/win32/netapi32/schedule.c * PURPOSE: Scheduler service interface code * * PROGRAMMERS: Eric Kohl */ /* INCLUDES ******************************************************************/ #include "netapi32.h" #include "atsvc_c.h" WINE_DEFAULT_DEBUG_CHANNEL(netapi32); /* FUNCTIONS *****************************************************************/ handle_t __RPC_USER ATSVC_HANDLE_bind(ATSVC_HANDLE pszSystemName) { handle_t hBinding = NULL; LPWSTR pszStringBinding; RPC_STATUS status; TRACE("ATSVC_HANDLE_bind() called\n"); status = RpcStringBindingComposeW(NULL, L"ncacn_np", (RPC_WSTR)pszSystemName, L"\\pipe\\atsvc", NULL, &pszStringBinding); if (status) { TRACE("RpcStringBindingCompose returned 0x%x\n", status); return NULL; } /* Set the binding handle that will be used to bind to the server. */ status = RpcBindingFromStringBindingW(pszStringBinding, &hBinding); if (status) { TRACE("RpcBindingFromStringBinding returned 0x%x\n", status); } status = RpcStringFreeW(&pszStringBinding); if (status) { // TRACE("RpcStringFree returned 0x%x\n", status); } return hBinding; } void __RPC_USER ATSVC_HANDLE_unbind(ATSVC_HANDLE pszSystemName, handle_t hBinding) { RPC_STATUS status; TRACE("ATSVC_HANDLE_unbind() called\n"); status = RpcBindingFree(&hBinding); if (status) { TRACE("RpcBindingFree returned 0x%x\n", status); } } NET_API_STATUS WINAPI NetScheduleJobAdd( LPCWSTR ServerName, LPBYTE Buffer, LPDWORD JobId) { NET_API_STATUS status; TRACE("NetScheduleJobAdd(%s, %p, %p)\n", debugstr_w(ServerName), Buffer, JobId); RpcTryExcept { status = NetrJobAdd(ServerName, (LPAT_INFO)Buffer, JobId); } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { status = I_RpcMapWin32Status(RpcExceptionCode()); } RpcEndExcept; return status; } NET_API_STATUS WINAPI NetScheduleJobDel( LPCWSTR ServerName, DWORD MinJobId, DWORD MaxJobId) { NET_API_STATUS status; TRACE("NetScheduleJobDel(%s, %d, %d)\n", debugstr_w(ServerName), MinJobId, MaxJobId); RpcTryExcept { status = NetrJobDel(ServerName, MinJobId, MaxJobId); } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { status = I_RpcMapWin32Status(RpcExceptionCode()); } RpcEndExcept; return status; } NET_API_STATUS WINAPI NetScheduleJobEnum( LPCWSTR ServerName, LPBYTE *PointerToBuffer, DWORD PreferredMaximumLength, LPDWORD EntriesRead, LPDWORD TotalEntries, LPDWORD ResumeHandle) { AT_ENUM_CONTAINER EnumContainer; NET_API_STATUS status; TRACE("NetScheduleJobEnum(%s, %p, %d, %p, %p, %p)\n", debugstr_w(ServerName), PointerToBuffer, PreferredMaximumLength, EntriesRead, TotalEntries, ResumeHandle); EnumContainer.EntriesRead = 0; EnumContainer.Buffer = NULL; RpcTryExcept { status = NetrJobEnum(ServerName, &EnumContainer, PreferredMaximumLength, TotalEntries, ResumeHandle); if (status == NERR_Success || status == ERROR_MORE_DATA) { *PointerToBuffer = (LPBYTE)EnumContainer.Buffer; *EntriesRead = EnumContainer.EntriesRead; } } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { status = I_RpcMapWin32Status(RpcExceptionCode()); } RpcEndExcept; return status; } NET_API_STATUS WINAPI NetScheduleJobGetInfo( LPCWSTR ServerName, DWORD JobId, LPBYTE *PointerToBuffer) { NET_API_STATUS status; TRACE("NetScheduleJobGetInfo(%s, %d, %p)\n", debugstr_w(ServerName), JobId, PointerToBuffer); RpcTryExcept { status = NetrJobGetInfo(ServerName, JobId, (LPAT_INFO *)PointerToBuffer); } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { status = I_RpcMapWin32Status(RpcExceptionCode()); } RpcEndExcept; return status; } /* EOF */