Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

282 lines
4.9 KiB

/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
srvfsd.h
Abstract:
This module defines routines in the File System Driver for the LAN
Manager server.
Author:
Chuck Lenzmeier (chuckl) 1-Dec-1989
Revision History:
--*/
#ifndef _SRVFSD_
#define _SRVFSD_
//#include "srvblock.h"
//
// FSD dispatch routine.
//
NTSTATUS
SrvFsdDispatch (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
//
// FSD I/O completion routine
//
NTSTATUS
SrvFsdIoCompletionRoutine (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
//
// FSD TDI send completion routine
//
NTSTATUS
SrvFsdSendCompletionRoutine (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
//
// FSD Oplock request completion routine
//
NTSTATUS
SrvFsdOplockCompletionRoutine (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
//
// FSD transport Connect indication handler
//
NTSTATUS
SrvFsdTdiConnectHandler (
IN PVOID TdiEventContext,
IN int RemoteAddressLength,
IN PVOID RemoteAddress,
IN int UserDataLength,
IN PVOID UserData,
IN int OptionsLength,
IN PVOID Options,
OUT CONNECTION_CONTEXT *ConnectionContext,
OUT PIRP *AcceptIrp
);
//
// FSD transport Disconnect indication handler
//
NTSTATUS
SrvFsdTdiDisconnectHandler (
IN PVOID TdiEventContext,
IN CONNECTION_CONTEXT ConnectionContext,
IN int DisconnectDataLength,
IN PVOID DisconnectData,
IN int DisconnectInformationLength,
IN PVOID DisconnectInformation,
IN ULONG DisconnectFlags
);
//
// FSD transport Receive indication handler
//
NTSTATUS
SrvFsdTdiReceiveHandler (
IN PVOID TdiEventContext,
IN CONNECTION_CONTEXT ConnectionContext,
IN ULONG ReceiveFlags,
IN ULONG BytesIndicated,
IN ULONG BytesAvailable,
OUT ULONG *BytesTaken,
IN PVOID Tsdu,
OUT PIRP *IoRequestPacket
);
#ifdef SRV_PNP_POWER
VOID
SrvTdiBindCallback (
IN PUNICODE_STRING DeviceName
);
VOID
SrvTdiUnbindCallback (
IN PUNICODE_STRING DeviceName
);
#endif
//
// Routine to get a work item from the free list. Wakes the resource
// thread if the list is getting empty.
//
PWORK_CONTEXT SRVFASTCALL
SrvFsdGetReceiveWorkItem (
PWORK_QUEUE queue
);
//
// If a workitem could not be allocated, SrvServiceWorkItemShortage() is called
// when the next workitem is freed
//
VOID SRVFASTCALL
SrvServiceWorkItemShortage (
IN PWORK_CONTEXT WorkContext
);
//
// Routine to queue an EX work item to an EX worker thread.
//
#define SrvFsdQueueExWorkItem(_item,_running,_type) { \
if ( !*(_running) ) { \
*(_running) = TRUE; \
ExQueueWorkItem( (_item), (_type) ); \
} \
}
//
// SMB processing support routines.
//
VOID SRVFASTCALL
SrvFsdRequeueReceiveWorkItem (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartSmbComplete (
IN OUT PWORK_CONTEXT WorkContext
);
VOID
SrvFsdServiceNeedResourceQueue (
IN PWORK_CONTEXT *WorkContext,
IN PKIRQL OldIrql
);
//
// SMB processing restart routines referenced by the FSP.
//
VOID SRVFASTCALL
SrvFsdRestartRead (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartReadAndX (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartReadBulk (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartWrite (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartWriteAndX (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartWriteBulk (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
IpxRestartStartSendOnCorrectProcessor (
IN OUT PWORK_CONTEXT WorkContext
);
VOID SRVFASTCALL
SrvFsdRestartLargeReadAndX (
IN OUT PWORK_CONTEXT WorkContext
);
//
// Resource shortage routines.
//
BOOLEAN
SrvAddToNeedResourceQueue (
IN PCONNECTION Connection,
IN RESOURCE_TYPE ResourceType,
IN PRFCB Rfcb OPTIONAL
);
//
// Send Completion Routines
//
NTSTATUS
SrvFsdRestartSmbAtSendCompletion (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PWORK_CONTEXT WorkContext
);
NTSTATUS
SrvQueueWorkToFspAtSendCompletion (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PWORK_CONTEXT WorkContext
);
NTSTATUS
SrvFsdRestartSendOplockIItoNone(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN OUT PWORK_CONTEXT WorkContext
);
NTSTATUS
RequeueIpxWorkItemAtSendCompletion (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN OUT PWORK_CONTEXT WorkContext
);
NTSTATUS
RestartCopyReadMpxComplete (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN OUT PWORK_CONTEXT WorkContext
);
NTSTATUS
RestartCopyReadRawResponse (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN OUT PWORK_CONTEXT WorkContext
);
#endif // ndef _SRVFSD_