Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
net\routing\ipx\sap\workers.h
Abstract:
Header file for agent work items
Author:
Vadim Eydelman 05-15-1995
Revision History:
--*/ #ifndef _SAP_WORKERS_
#define _SAP_WORKERS_
// Max number of pending recv work items
extern LONG MaxUnprocessedRequests;
// Minimum number of queued recv requests
extern LONG MinPendingRequests;
// How often to check on pending triggered update
extern ULONG TriggeredUpdateCheckInterval; // How many requests to send if no response received within check interval
extern ULONG MaxTriggeredUpdateRequests;
// Whether to respond for internal servers that are not registered with SAP
// through the API calls (for standalone service only)
extern ULONG RespondForInternalServers;
// Delay in response to general reguests for specific server type
// if local servers are included in the packet
extern ULONG DelayResponseToGeneral;
// Delay in sending change broadcasts if packet is not full
extern ULONG DelayChangeBroadcast;
// Workers that are enqueued for io processing
typedef struct _IO_WORKER { WORKERFUNCTION worker; IO_PARAM_BLOCK io; } IO_WORKER, *PIO_WORKER;
// Workers that are enqueued for timer processing
typedef struct _TIMER_WORKER { WORKERFUNCTION worker; TM_PARAM_BLOCK tm; } TIMER_WORKER, *PTIMER_WORKER;
// Workers that are enqueued to receive LPC request
typedef struct _LPC_WORKER { WORKERFUNCTION worker; LPC_PARAM_BLOCK lpc; } LPC_WORKER, *PLPC_WORKER; /*
VOID ScheduleWorkItem ( WORKERFUNCTION *worker ); */ #define ScheduleWorkItem(worker) RtlQueueWorkItem(*worker,worker,0)
#define ProcessCompletedIORequest(ioreq) \
ScheduleWorkItem (&CONTAINING_RECORD(ioreq,IO_WORKER,io)->worker)
#define ProcessCompletedTimerRequest(tmreq) \
ScheduleWorkItem (&CONTAINING_RECORD(tmreq,TIMER_WORKER,tm)->worker);
#define ProcessCompletedLpcRequest(lpcreq) \
ScheduleWorkItem (&CONTAINING_RECORD(lpcreq,LPC_WORKER,lpc)->worker)
/*++
******************************************************************* I n i t i a l i z e W o r k e r s
Routine Description: Initialize heap to be used for allocation of work items Arguments: None Return Value: NO_ERROR - heap was initialized OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitializeWorkers ( HANDLE RecvEvent );
/*++
******************************************************************* S h u t d o w n W o r k e r s
Routine Description: Stops new worker creation and signals event when all workers are deleted Arguments: doneEvent - event to be signalled when all workers are deleted Return Value: None ******************************************************************* --*/ VOID ShutdownWorkers ( IN HANDLE doneEvent ); /*++
******************************************************************* D e l e t e W o r k e r s
Routine Description: Deletes heap used for work items Arguments: None Return Value: None ******************************************************************* --*/ VOID DeleteWorkers ( void );
VOID AddRecvRequests ( LONG count );
VOID RemoveRecvRequests ( LONG count );
/*++
******************************************************************* I n i t R e q I t e m
Routine Description: Allocate and initialize IO request item Enqueue the request Arguments: None Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitReqItem ( void );
/*++
******************************************************************* I n i t R e s p I t e m
Routine Description: Allocate and initialize SAP response item Call ProcessRespItem to fill the packet and send it Arguments: intf - pointer to interface control block to send on svrType - type of servers to put in response packet dst - where to send the response packet bcast - are we responding to broadcasted request Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitRespItem ( PINTERFACE_DATA intf, USHORT svrType, PIPX_ADDRESS_BLOCK dst, BOOL bcast );
/*++
******************************************************************* I n i t G n e a r I t e m
Routine Description: Allocate and initialize GETNEAREST response work item Arguments: intf - pointer to interface control block to send on svrType - type of servers to put in response packet dst - where to send the response packet Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitGnearItem ( PINTERFACE_DATA intf, USHORT svrType, PIPX_ADDRESS_BLOCK dest ); /*++
******************************************************************* I n i t B c a s t I t e m
Routine Description: Allocate and initialize broadcast item Arguments: intf - pointer to interface control block to send on chngEnum - enumeration handle in SDB change queue to track changed servers Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitBcastItem ( PINTERFACE_DATA intf );
/*++
******************************************************************* I n i t S r e q I t e m
Routine Description: Allocate and initialize send request item (send SAP request on interface) Arguments: intf - pointer to interface control block to send on Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitSreqItem ( PINTERFACE_DATA intf );
/*++
******************************************************************* I n i t L P C I t e m
Routine Description: Allocate and initialize LPC work item Arguments: None Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitLPCItem ( void );
/*++
******************************************************************* I n i t T r e q I t e m
Routine Description: Allocate and initialize triggered request item (send SAP request on interface and wait for responces to arrive) Arguments: intf - pointer to interface control block to send on Return Value: NO_ERROR - item was initialized and enqueued OK other - operation failed (windows error code) ******************************************************************* --*/ DWORD InitTreqItem ( PINTERFACE_DATA intf );
#endif
|