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