windows-nt/Source/XPSP1/NT/printscan/print/spooler/spoolss/server/splsvr.h

164 lines
2.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1106990 Microsoft Corporation
Module Name:
splsvr.h
Abstract:
Header file for Spooler Service.
Contains all function prototypes
Author:
Krishna Ganugapati (KrishnaG) 18-Oct-1993
Notes:
Revision History:
4-Jan-1999 Khaleds
Added Code for optimiziting the load time of the spooler by decoupling
the startup dependency between spoolsv and spoolss
--*/
//
// Spooler Service States (used as return codes)
//
#define UPDATE_ONLY 0 // no change in state - just send current status.
#define STARTING 1 // the messenger is initializing.
#define RUNNING 2 // initialization completed normally - now running
#define STOPPING 3 // uninstall pending
#define STOPPED 4 // uninstalled
//
// Forced Shutdown PendingCodes
//
#define PENDING TRUE
#define IMMEDIATE FALSE
#define SPOOLER_START_PHASE_TWO_INIT 2*60*1000
//
// Based on the data fed back to us from perf devs,
// the maximum number of threads encountered in their
// tests was 2385 threads at the rate of ~12000
// jobs/min. This is at 72% CPU capacity and so the
// following number is suggested as a threshold to
// be on the safe side with serving i/p concurrent
// RPC client requests
//
#define SPL_MAX_RPC_CALLS 6000
extern HANDLE TerminateEvent;
extern HANDLE hPhase2Init;
extern WCHAR szSpoolerExitingEvent[];
//
// Function Prototypes
//
DWORD
GetSpoolerState (
VOID
);
DWORD
SpoolerBeginForcedShutdown(
IN BOOL PendingCode,
IN DWORD Win32ExitCode,
IN DWORD ServiceSpecificExitCode
);
DWORD
SpoolerInitializeSpooler(
DWORD argc,
LPTSTR *argv
);
VOID
SpoolerShutdown(VOID);
VOID
SpoolerStatusInit(VOID);
DWORD
SpoolerStatusUpdate(
IN DWORD NewState
);
DWORD
SpoolerCtrlHandler(
IN DWORD opcode,
IN DWORD dwEventType,
IN PVOID pEventData,
IN PVOID pData
);
BOOL
InitializeRouter(
SERVICE_STATUS_HANDLE SpoolerStatusHandle
);
DWORD
SplProcessPnPEvent(
IN DWORD dwEventType,
IN PVOID pEventData,
IN PVOID pData
);
VOID
SplStartPhase2Init(
VOID);
BOOL
SplPowerEvent(
DWORD
);
RPC_STATUS
SpoolerStartRpcServer(
VOID
);
RPC_STATUS
SpoolerStopRpcServer(
VOID
);
VOID
SPOOLER_main (
IN DWORD argc,
IN LPTSTR argv[]
);
PSECURITY_DESCRIPTOR
CreateNamedPipeSecurityDescriptor(
VOID
);
BOOL
BuildNamedPipeProtection(
IN PUCHAR AceType,
IN DWORD AceCount,
IN PSID *AceSid,
IN ACCESS_MASK *AceMask,
IN BYTE *InheritFlags,
IN PSID OwnerSid,
IN PSID GroupSid,
IN PGENERIC_MAPPING GenericMap,
OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor
);