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.
865 lines
17 KiB
865 lines
17 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
Copyright (c) 1991 Nokia Data Systems AB
|
|
|
|
Module Name:
|
|
|
|
dlcext.h
|
|
Abstract:
|
|
|
|
This module includes all internal prototypes and
|
|
externals of dlc (api driver) module.
|
|
|
|
Author:
|
|
|
|
Antti Saarenheimo 22-Jul-1991
|
|
|
|
Environment:
|
|
|
|
Kernel mode
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
extern USHORT aSpecialOutputBuffers[];
|
|
extern BOOLEAN MemoryLockFailed;
|
|
extern KSPIN_LOCK DlcSpinLock;
|
|
|
|
NTSTATUS
|
|
BufferPoolCreate(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PVOID pUserBuffer,
|
|
IN LONG MaxBufferSize,
|
|
IN LONG MinFreeSizeThreshold,
|
|
OUT HANDLE *pBufferPoolHandle,
|
|
OUT PVOID* AlignedAddress,
|
|
OUT PULONG AlignedSize
|
|
);
|
|
|
|
NTSTATUS
|
|
BufferPoolExpand(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL pBufferPool
|
|
);
|
|
|
|
VOID
|
|
BufferPoolFreeExtraPages(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL pBufferPool
|
|
);
|
|
|
|
VOID
|
|
DeallocateBuffer(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN PDLC_BUFFER_HEADER pBuffer
|
|
);
|
|
|
|
NTSTATUS
|
|
AllocateBufferHeader(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN PDLC_BUFFER_HEADER pParent,
|
|
IN UCHAR Size,
|
|
IN UCHAR Index,
|
|
IN UINT FreeListTableIndex
|
|
);
|
|
|
|
NTSTATUS
|
|
BufferPoolAllocate(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN UINT BufferSize,
|
|
IN UINT FrameHeaderSize,
|
|
IN UINT UserDataSize,
|
|
IN UINT FrameLength,
|
|
IN UINT SegmentSizeIndex,
|
|
IN OUT PDLC_BUFFER_HEADER *ppBufferHeader,
|
|
OUT PUINT puiBufferSizeLeft
|
|
);
|
|
|
|
NTSTATUS
|
|
BufferPoolDeallocate(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN UINT BufferCount,
|
|
IN PLLC_TRANSMIT_DESCRIPTOR pBuffers
|
|
);
|
|
|
|
NTSTATUS
|
|
BufferPoolBuildXmitBuffers(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN UINT BufferCount,
|
|
IN PLLC_TRANSMIT_DESCRIPTOR pBuffers,
|
|
IN OUT PDLC_PACKET pPacket
|
|
);
|
|
|
|
VOID
|
|
BufferPoolFreeXmitBuffers(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN OUT PDLC_PACKET pPacket
|
|
);
|
|
|
|
PDLC_BUFFER_HEADER
|
|
GetBufferHeader(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN PVOID pUserBuffer
|
|
);
|
|
|
|
VOID
|
|
BufferPoolDereference(
|
|
#if DBG
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
#endif
|
|
IN PDLC_BUFFER_POOL *pBufferPool
|
|
);
|
|
|
|
NTSTATUS
|
|
BufferPoolReference(
|
|
IN HANDLE hExternalHandle,
|
|
OUT PVOID *phOpaqueHandle
|
|
);
|
|
|
|
VOID
|
|
BufferPoolDeallocateList(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN PDLC_BUFFER_HEADER pBufferList
|
|
);
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT pDriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
CreateAdapterFileContext(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
CloseAdapterFileContext(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
VOID
|
|
DlcKillFileContext(
|
|
IN PDLC_FILE_CONTEXT pFileContext
|
|
);
|
|
|
|
VOID
|
|
DlcDriverUnload(
|
|
IN PDRIVER_OBJECT pDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
CleanupAdapterFileContext(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcDeviceIoControl(
|
|
IN PDEVICE_OBJECT pDeviceContext,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
VOID
|
|
DlcCompleteIoRequest(
|
|
IN PIRP pIrp,
|
|
IN BOOLEAN InCancel
|
|
);
|
|
|
|
VOID
|
|
DlcCancelIrp(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
SetIrpCancelRoutine(
|
|
IN PIRP Irp,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
#ifdef DLC_PRIVATE_PROTOTYPES
|
|
|
|
DLC_STATUS
|
|
LlcReceiveIndication(
|
|
IN PDLC_FILE_CONTEXT hFileContext,
|
|
IN PDLC_OBJECT hDlcObject,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN USHORT FrameType,
|
|
IN PUCHAR pLookBuf,
|
|
IN UINT cbLookBuf
|
|
);
|
|
|
|
VOID
|
|
LlcEventIndication(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PVOID hEventObject,
|
|
IN UINT Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo
|
|
);
|
|
|
|
VOID
|
|
LlcCommandCompletion(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PDLC_PACKET pPacket
|
|
);
|
|
|
|
#else
|
|
|
|
DLC_STATUS
|
|
LlcReceiveIndication(
|
|
IN PVOID hFileContext,
|
|
IN PVOID hClientHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN USHORT FrameType,
|
|
IN PVOID pLookBuf,
|
|
IN UINT cbLookBuf
|
|
);
|
|
|
|
VOID
|
|
LlcEventIndication(
|
|
IN PVOID hFileContext,
|
|
IN PVOID hEventObject,
|
|
IN UINT Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInformation
|
|
);
|
|
|
|
VOID
|
|
LlcCommandCompletion(
|
|
IN PVOID hFileContext,
|
|
IN PVOID hDlcObject,
|
|
IN PVOID hRequest
|
|
);
|
|
|
|
#endif
|
|
|
|
VOID
|
|
CompleteTransmitCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PIRP pIrp,
|
|
IN PDLC_OBJECT pChainObject,
|
|
IN PDLC_PACKET pRootXmitNode
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcQueryInformation(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcSetInformation(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
VOID
|
|
GetOpenSapAndStationCount(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
OUT PUCHAR OpenSaps,
|
|
OUT PUCHAR OpenStations
|
|
);
|
|
|
|
NTSTATUS
|
|
SetupGroupSaps(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN UINT GroupSapCount,
|
|
IN PUCHAR pGroupSapList
|
|
);
|
|
|
|
NTSTATUS
|
|
MakeDlcEvent(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN ULONG Event,
|
|
IN USHORT StationId,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo,
|
|
IN BOOLEAN FreeEventInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
QueueDlcCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN ULONG Event,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask,
|
|
IN PIRP pIrp,
|
|
IN PVOID AbortHandle,
|
|
IN PFCOMPLETION_HANDLER pfCompletionHandler
|
|
);
|
|
|
|
NTSTATUS
|
|
AbortCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask,
|
|
IN PVOID AbortHandle,
|
|
IN OUT PVOID *ppCcbLink,
|
|
IN UINT CancelStatus,
|
|
IN BOOLEAN SuppressCommandCompletion
|
|
);
|
|
|
|
VOID
|
|
CancelDlcCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_COMMAND pDlcCommand,
|
|
IN OUT PVOID *ppCcbLink,
|
|
IN UINT CancelStatus,
|
|
IN BOOLEAN SuppressCommandCompletion
|
|
);
|
|
|
|
VOID
|
|
PurgeDlcEventQueue(
|
|
IN PDLC_FILE_CONTEXT pFileContext
|
|
);
|
|
|
|
VOID
|
|
PurgeDlcFlowControlQueue(
|
|
IN PDLC_FILE_CONTEXT pFileContext
|
|
);
|
|
|
|
VOID
|
|
CompleteDlcCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN USHORT StationId,
|
|
IN PDLC_COMMAND pDlcCommand,
|
|
IN UINT Status
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
IsCommandOnList(
|
|
IN PVOID RequestHandle,
|
|
IN PLIST_ENTRY List
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
SearchAndRemoveCommand(
|
|
IN PLIST_ENTRY pListHead,
|
|
IN ULONG EventMask,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
SearchAndRemoveCommandByHandle(
|
|
IN PLIST_ENTRY pListHead,
|
|
IN ULONG EventMask,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask,
|
|
IN PVOID AbortHandle
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
SearchAndRemoveSpecificCommand(
|
|
IN PLIST_ENTRY pListHead,
|
|
IN PVOID AbortHandle
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
SearchAndRemoveAnyCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN ULONG Event,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask,
|
|
IN PVOID pSearchHandle
|
|
);
|
|
|
|
VOID
|
|
SearchReadCommandForClose(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo,
|
|
IN PVOID pCcbAddress,
|
|
IN ULONG CommandCompletionFlag,
|
|
IN USHORT StationId,
|
|
IN USHORT StationIdMask
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcBufferFree(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcBufferGet(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcBufferCreate(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcBufferMaintain(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcConnectStation(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcFlowControl(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReallocate(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReset(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
BOOLEAN
|
|
ConnectCompletion(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PIRP pIrp,
|
|
IN UINT Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
DirSetExceptionFlags(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
VOID
|
|
DlcCompleteRequest(
|
|
IN PIRP pIrp,
|
|
IN PVOID pUserCcbPointer
|
|
);
|
|
|
|
VOID
|
|
CompleteAsyncCommand(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN UINT Status,
|
|
IN PIRP pIrp,
|
|
IN PVOID pUserCcbPointer,
|
|
IN BOOLEAN InCancel
|
|
);
|
|
|
|
NTSTATUS
|
|
GetLinkStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN USHORT StationId,
|
|
OUT PDLC_OBJECT *ppLinkStation
|
|
);
|
|
|
|
NTSTATUS
|
|
GetSapStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN USHORT StationId,
|
|
OUT PDLC_OBJECT *ppLinkStation
|
|
);
|
|
|
|
NTSTATUS
|
|
GetStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN USHORT StationId,
|
|
OUT PDLC_OBJECT *ppStation
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReadCancel(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DirOpenAdapter(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DirCloseAdapter(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
VOID
|
|
CompleteDirInitialize(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo,
|
|
IN PVOID pCcbLink
|
|
);
|
|
|
|
VOID
|
|
CompleteDirCloseAdapter(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo,
|
|
IN PVOID pCcbLink
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcTransmit(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pParameters,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DirTimerSet(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
BOOLEAN
|
|
DirTimerSetCompletion(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PIRP pIrp,
|
|
IN UINT Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
DirTimerCancelGroup(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DirTimerCancel(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
PDLC_COMMAND*
|
|
SearchTimerCommand(
|
|
IN PDLC_COMMAND *ppQueue,
|
|
IN PVOID pSearchHandle,
|
|
IN BOOLEAN SearchCompletionFlags
|
|
);
|
|
|
|
PDLC_COMMAND
|
|
SearchPrevCommandWithFlag(
|
|
IN PDLC_COMMAND pQueueBase,
|
|
IN ULONG Event,
|
|
IN ULONG CommandCompletionFlag
|
|
);
|
|
|
|
VOID
|
|
AbortCommandsWithFlag(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN ULONG CommandCompletionFlag,
|
|
IN OUT PVOID *ppCcbLink,
|
|
IN UINT CancelStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcOpenSap(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DirOpenDirect(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcOpenLinkStation(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
InitializeLinkStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pSap,
|
|
IN PNT_DLC_PARMS pDlcParms OPTIONAL,
|
|
IN PVOID LlcLinkHandle OPTIONAL,
|
|
OUT PDLC_OBJECT *ppLinkStation
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcCloseStation(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
BOOLEAN
|
|
CloseAllStations(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PIRP pIrp,
|
|
IN ULONG Event,
|
|
IN PFCLOSE_COMPLETE pfCloseComplete,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo
|
|
);
|
|
|
|
VOID
|
|
CloseAnyStation(
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo,
|
|
IN BOOLEAN DoImmediateClose
|
|
);
|
|
|
|
VOID
|
|
CompleteCloseReset(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReceiveRequest(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
BOOLEAN
|
|
ReceiveCompletion(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PIRP pIrp,
|
|
IN ULONG Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReadRequest(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
BOOLEAN
|
|
ReadCompletion(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN PIRP pIrp,
|
|
IN ULONG Event,
|
|
IN PVOID pEventInformation,
|
|
IN ULONG SecondaryInfo
|
|
);
|
|
|
|
VOID
|
|
CreateBufferChain(
|
|
IN PDLC_BUFFER_HEADER pBufferHeaders,
|
|
OUT PVOID *pFirstBuffer,
|
|
OUT PUSHORT pReceivedFrameCount
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcReceiveCancel(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG ParameterLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
NTSTATUS
|
|
DlcCompleteCommand(
|
|
IN PIRP pIrp,
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PNT_DLC_PARMS pDlcParms,
|
|
IN ULONG InputBufferLength,
|
|
IN ULONG OutputBufferLength
|
|
);
|
|
|
|
VOID
|
|
GetDlcErrorCounters(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PUCHAR pAdapterErrors
|
|
);
|
|
|
|
VOID
|
|
QueueDlcEvent(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_PACKET pPacket
|
|
);
|
|
|
|
VOID
|
|
CompleteCloseStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject
|
|
);
|
|
|
|
VOID
|
|
CloseStation(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_OBJECT pDlcObject,
|
|
IN BOOLEAN DoImmediateClose
|
|
);
|
|
|
|
VOID
|
|
CleanUpEvents(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_CLOSE_WAIT_INFO pClosingInfo,
|
|
IN PDLC_OBJECT pDlcObject
|
|
);
|
|
|
|
VOID
|
|
CompleteCompletionPacket(
|
|
IN PDLC_FILE_CONTEXT pFileContext,
|
|
IN PDLC_COMPLETION_EVENT_INFO pCompletionInfo,
|
|
IN OUT PNT_DLC_PARMS pParms
|
|
);
|
|
|
|
PMDL
|
|
AllocateProbeAndLockMdl(
|
|
IN PVOID UserBuffer,
|
|
IN UINT UserBufferLength
|
|
);
|
|
|
|
VOID
|
|
BuildMappedPartialMdl(
|
|
IN PMDL pMappedSourceMdl,
|
|
IN OUT PMDL pTargetMdl,
|
|
IN PVOID BaseVa,
|
|
IN ULONG Length
|
|
);
|
|
|
|
VOID
|
|
BufferTrace(
|
|
IN PDLC_BUFFER_POOL pBufferPool,
|
|
IN PSZ DebugString
|
|
);
|
|
|
|
VOID
|
|
CheckIrql(
|
|
PKIRQL pOldIrqLevel
|
|
);
|
|
|
|
VOID
|
|
ResetLocalBusyBufferStates(
|
|
IN PDLC_FILE_CONTEXT pFileContext
|
|
);
|
|
|
|
VOID
|
|
CompleteLlcObjectClose(
|
|
IN PDLC_OBJECT pDlcObject
|
|
);
|
|
|
|
VOID
|
|
UnlockAndFreeMdl(
|
|
PMDL pMdl
|
|
);
|
|
|
|
BOOLEAN
|
|
DecrementCloseCounters(
|
|
PDLC_FILE_CONTEXT pFileContext,
|
|
PDLC_CLOSE_WAIT_INFO pClosingInfo
|
|
);
|
|
|
|
VOID
|
|
CompleteDirectOutIrp(
|
|
IN PIRP Irp,
|
|
IN UCHAR Status,
|
|
IN PLLC_CCB NextCcb
|
|
);
|
|
|