windows-nt/Source/XPSP1/NT/base/fs/srv/srvfsp.h
2020-09-26 16:20:57 +08:00

121 lines
2.2 KiB
C

/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
srvfsp.h
Abstract:
This module defines main FSP routines for the LAN Manager server.
Author:
Chuck Lenzmeier (chuckl) 1-Dec-1989
Revision History:
--*/
#ifndef _SRVFSP_
#define _SRVFSP_
//#include <ntos.h>
//
// Configuration thread routine. Processes requests from the server
// service. Runs in an EX worker thread.
//
VOID
SrvConfigurationThread (
IN PDEVICE_OBJECT pDevice,
IN PIO_WORKITEM pWorkItem
);
//
// Thread manager routines
//
NTSTATUS
SrvInitializeScavenger (
VOID
);
VOID
SrvResourceThread (
IN PVOID Parameter
);
VOID
SrvTerminateScavenger (
VOID
);
NTSTATUS
SrvCreateWorkerThreads (
VOID
);
VOID SRVFASTCALL
SrvTerminateWorkerThread (
IN OUT PWORK_CONTEXT SpecialWorkItem
);
VOID
SrvBalanceLoad (
IN OUT PCONNECTION connection
);
//
// Work queue functions.
//
VOID SRVFASTCALL
SrvQueueWorkToBlockingThread (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvQueueWorkToFsp (
IN OUT PWORK_CONTEXT WorkContext
);
//
// SrvQueueWorkToFspAtDpcLevel was once a different routine than
// SrvQueueWorkToFsp -- the latter routine called KeRaise/LowerIrql.
// With the advent of the kernel queue object, there is no longer a
// difference between the routines. The calling code has not been
// changed in order to retain the knowledge about which callers can use
// the optimized call if there is ever again a difference between them.
//
#define SrvQueueWorkToFspAtDpcLevel SrvQueueWorkToFsp
#define QUEUE_WORK_TO_FSP(_work) { \
(_work)->ProcessingCount++; \
SrvInsertWorkQueueTail( \
_work->CurrentWorkQueue, \
(PQUEUEABLE_BLOCK_HEADER)(_work) \
); \
}
//
// Routine in scavengr.c to store scavenger/alerter timeouts.
//
VOID
SrvCaptureScavengerTimeout (
IN PLARGE_INTEGER ScavengerTimeout,
IN PLARGE_INTEGER AlerterTimeout
);
VOID
SrvUpdateStatisticsFromQueues (
OUT PSRV_STATISTICS CapturedSrvStatistics OPTIONAL
);
#endif // ndef _SRVFSP_