164 lines
2.8 KiB
C
164 lines
2.8 KiB
C
/*++
|
|
|
|
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
|
|
);
|
|
|
|
|