NT4/private/ntos/ndis/ndiswan/wanproto.h
2020-09-30 17:12:29 +02:00

697 lines
9.7 KiB
C

/*++
Copyright (c) 1990-1995 Microsoft Corporation
Module Name:
Wanproto.h
Abstract:
This file contains the prototypes for functions that NdisWan uses.
Author:
Tony Bell (TonyBe) June 06, 1995
Environment:
Kernel Mode
Revision History:
TonyBe 06/06/95 Created
--*/
#ifndef _NDISWAN_PROTO
#define _NDISWAN_PROTO
//
// Functions from ccp.c
//
VOID
WanDeallocateCCP(
PBUNDLECB BundleCB
);
NTSTATUS
WanAllocateCCP(
PBUNDLECB BundleCB
);
//
// Functions from indicate.c
//
VOID
NdisWanLineUpIndication(
IN PWAN_ADAPTERCB WanAdapterCB,
IN PUCHAR Buffer,
IN ULONG BufferSize
);
VOID
NdisWanLineDownIndication(
IN PWAN_ADAPTERCB WanAdapterCB,
IN PUCHAR Buffer,
IN ULONG BufferSize
);
VOID
NdisWanFragmentIndication(
IN PWAN_ADAPTERCB WanAdapterCB,
IN PUCHAR Buffer,
IN ULONG BufferSize
);
VOID
UpdateBundleInfo(
IN PBUNDLECB BundleCB
);
VOID
AddLinkToBundle(
IN PBUNDLECB BundleCB,
IN PLINKCB LinkCB
);
VOID
RemoveLinkFromBundle(
IN PBUNDLECB BundleCB,
IN PLINKCB LinkCB
);
VOID
FreeBundleResources(
PBUNDLECB BundleCB
);
//
// Functions from io.c
//
#ifdef NT
NTSTATUS
NdisWanIoctl(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
VOID
NdisWanCancelRoutine(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
NTSTATUS
NdisWanIrpStub(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
#endif // NT
//
// Functions from loopback.c
//
VOID
NdisWanQueueLoopbackPacket(
PADAPTERCB AdapterCB,
PNDIS_PACKET NdisPacket
);
VOID
NdisWanProcessLoopbacks(
PADAPTERCB AdapterCB
);
//
// Functions from memory.c
//
NDIS_STATUS
NdisWanCreateAdapterCB(
OUT PADAPTERCB *pAdapterCB,
IN PNDIS_STRING AdapterName
);
VOID
NdisWanDestroyAdapterCB(
IN PADAPTERCB pAdapterCB
);
NDIS_STATUS
NdisWanCreateWanAdapterCB(
IN PWSTR BindName
);
VOID
NdisWanDestroyWanAdapterCB(
IN PWAN_ADAPTERCB pWanAdapterCB
);
VOID
NdisWanGetProtocolCB(
OUT PPROTOCOLCB *ProtocolCB,
IN USHORT usProtocolType,
IN USHORT usDeviceNameLength,
IN PWSTR DeviceName,
IN ULONG ulBufferLength,
IN PUCHAR Buffer
);
VOID
NdisWanReturnProtocolCB(
IN PPROTOCOLCB ProtocolCB
);
VOID
NdisWanGetLinkCB(
OUT PLINKCB *LinkCB,
IN PWAN_ADAPTERCB WanAdapterCB,
IN ULONG SendWindow
);
VOID
NdisWanReturnLinkCB(
PLINKCB LinkCB
);
VOID
NdisWanGetBundleCB(
OUT PBUNDLECB *BundleCB
);
VOID
NdisWanReturnBundleCB(
IN PBUNDLECB BundleCB
);
NDIS_STATUS
NdisWanCreatePPPProtocolTable(
VOID
);
VOID
NdisWanDestroyPPPProtocolTable(
VOID
);
NDIS_STATUS
NdisWanCreateConnectionTable(
ULONG TableSize
);
VOID
NdisWanDestroyConnectionTable(
VOID
);
VOID
CompleteThresholdEvent(
PBUNDLECB BundleCB,
ULONG ThresholdType
);
VOID
NdisWanGetDeferredDesc(
PADAPTERCB AdapterCB,
PDEFERRED_DESC *RetDesc
);
//
// Functions from ndiswan.c
//
NDIS_STATUS
DoMiniportInit(
VOID
);
NDIS_STATUS
DoProtocolInit(
IN PUNICODE_STRING RegistryPath
);
NDIS_STATUS
DoWanMiniportInit(
VOID
);
VOID
NdisWanReadRegistry(
IN PUNICODE_STRING RegistryPath
);
VOID
NdisWanGlobalCleanup(
VOID
);
VOID
InsertPPP_ProtocolID(
IN ULONG Value,
IN ULONG ValueType
);
USHORT
GetPPP_ProtocolID(
IN USHORT Value,
IN ULONG ValueType
);
NDIS_HANDLE
InsertLinkInConnectionTable(
IN PLINKCB LinkCB
);
VOID
RemoveLinkFromConnectionTable(
IN PLINKCB LinkCB
);
NDIS_HANDLE
InsertBundleInConnectionTable(
IN PBUNDLECB BundleCB
);
VOID
RemoveBundleFromConnectionTable(
IN PBUNDLECB BundleCB
);
NTSTATUS
BindQueryRoutine(
IN PWSTR ValueName,
IN ULONG ValueType,
IN PVOID ValueData,
IN ULONG ValueLength,
IN PVOID Context,
IN PVOID EntryContext
);
NTSTATUS
ProtocolTypeQueryRoutine(
IN PWSTR ValueName,
IN ULONG ValueType,
IN PVOID ValueData,
IN ULONG ValueLength,
IN PVOID Context,
IN PVOID EntryContext
);
BOOLEAN
IsHandleValid(
USHORT usHandleType,
NDIS_HANDLE hHandle
);
#if DBG
PUCHAR
NdisWanGetNdisStatus(
IN NDIS_STATUS GeneralStatus
);
#endif
//
// Functions from miniport.c
//
BOOLEAN
NdisWanCheckForHang(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
NdisWanQueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
NdisWanSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
VOID
NdisWanHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
NdisWanInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE WrapperConfigurationContext
);
NDIS_STATUS
NdisWanReconfigure(
OUT PNDIS_STATUS OpenErrorStatus,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE WrapperConfigurationContext
);
NDIS_STATUS
NdisWanReset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
#ifdef USE_NDIS_MINIPORT_CALLBACK
VOID
DeferredCallback(
PADAPTERCB AdapterCB,
PVOID Context
);
#endif // end of USE_NDIS_MINIPORT_CALLBACK
//
// Functions from protocol.c
//
NDIS_STATUS
NdisWanOpenWanAdapter(
PWAN_ADAPTERCB pWanAdapterCB
);
VOID
NdisWanOpenAdapterComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status,
IN NDIS_STATUS OpenErrorStatus
);
VOID
NdisWanCloseAdapterComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status
);
VOID
NdisWanResetComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status
);
VOID
NdisWanTransferDataComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_PACKET pNdisPacket,
IN NDIS_STATUS Status,
IN UINT BytesTransferred
);
VOID
NdisWanRequestComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_REQUEST NdisRequest,
IN NDIS_STATUS Status
);
VOID
NdisWanIndicateStatusComplete(
IN NDIS_HANDLE BindingContext
);
VOID
NdisWanIndicateStatus(
IN NDIS_HANDLE BindingContext,
IN NDIS_STATUS GeneralStatus,
IN PVOID StatusBuffer,
IN UINT StatusBufferSize
);
NDIS_STATUS
DoNewLineUpToProtocol(
IN PPROTOCOLCB ProtocolCB
);
NDIS_STATUS
DoLineUpToProtocol(
IN PPROTOCOLCB ProtocolCB
);
NDIS_STATUS
DoLineDownToProtocol(
PPROTOCOLCB ProtocolCB
);
VOID
NdisWanProcessStatusIndications(
PADAPTERCB AdapterCB
);
//
// Functions from receive.c
//
NDIS_STATUS
NdisWanReceiveIndication(
IN NDIS_HANDLE NdisLinkContext,
IN PUCHAR Packet,
IN ULONG PacketSize
);
VOID
NdisWanReceiveComplete(
IN NDIS_HANDLE NdisLinkContext
);
NDIS_STATUS
NdisWanTransferData(
OUT PNDIS_PACKET NdisPacket,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);
VOID
FlushRecvDescAssemblyList(
IN PBUNDLECB BundleCB
);
VOID
FreeRecvDescFreeList(
IN PBUNDLECB BundleCB
);
VOID
NdisWanGetRecvDesc(
PBUNDLECB BundleCB,
PRECV_DESC *ReturnRecvDesc
);
VOID
RecvFlushFunction(
PVOID System1,
PVOID Context,
PVOID System2,
PVOID System3
);
VOID
NdisWanProcessReceiveIndications(
PADAPTERCB AdapterCB
);
BOOLEAN
IpIsDataFrame(
PUCHAR HeaderBuffer,
ULONG HeaderBufferLength,
ULONG TotalLength
);
BOOLEAN
IpxIsDataFrame(
PUCHAR HeaderBuffer,
ULONG HeaderBufferLength,
ULONG TotalLength
);
BOOLEAN
NbfIsDataFrame(
PUCHAR HeaderBuffer,
ULONG HeaderBufferLength,
ULONG TotalLength
);
//
// Functions from request.c
//
NDIS_STATUS
NdisWanSubmitNdisRequest(
IN PWAN_ADAPTERCB pWanAdapterCB,
IN PNDIS_REQUEST pNdisRequest,
IN WanRequestType Type,
IN WanRequestOrigin Origin
);
NDIS_STATUS
NdisWanOidProc(
IN PADAPTERCB pAdapterCB,
IN NDIS_OID Oid,
IN ULONG SetQueryFlag,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
PWAN_REQUEST
GetWanRequest(
IN PWAN_ADAPTERCB pWanAdapterCB,
IN PNDIS_REQUEST pNdisRequest
);
VOID
AddRequestToList(
IN PWAN_ADAPTERCB pWanAdapterCB,
IN PWAN_REQUEST pWanRequest
);
VOID
RemoveRequestFromList(
IN PWAN_ADAPTERCB pWanAdapterCB,
IN PWAN_REQUEST pWanRequest
);
//
// Functions from send.c
//
NDIS_STATUS
NdisWanSend(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET pNdisPacket,
IN UINT Flags
);
VOID
NdisWanSendCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_WAN_PACKET pNdisWanPacket,
IN NDIS_STATUS NdisStatus
);
VOID
NdisWanProcessSendCompletes(
PADAPTERCB AdapterCB
);
NDIS_STATUS
BuildIoPacket(
IN PNDISWAN_IO_PACKET pWanIoPacket,
IN BOOLEAN SendImmediate
);
VOID
NdisWanCopyFromPacketToBuffer(
IN PNDIS_PACKET NdisPacket,
IN ULONG Offset,
IN ULONG BytesToCopy,
OUT PUCHAR Buffer,
OUT PULONG BytesCopied
);
VOID
TryToCompleteNdisPacket(
PADAPTERCB AdapterCB,
PNDIS_PACKET NdisPacket
);
//
// Functions from tapi.c
//
NDIS_STATUS
NdisWanTapiRequestProc(
PWAN_ADAPTERCB WanAdapterCB,
PNDIS_REQUEST NdisRequest
);
VOID
NdisWanTapiRequestComplete(
PWAN_ADAPTERCB WanAdapterCB,
PWAN_REQUEST WanRequest
);
VOID
NdisWanTapiIndication(
PWAN_ADAPTERCB WanAdapterCB,
PUCHAR StatusBuffer,
ULONG StatusBufferSize
);
//
// Function from util.c
//
VOID
NdisWanStringToNdisString(
IN PNDIS_STRING pDestString,
IN PWSTR pSrcBuffer
);
VOID
NdisWanAllocateAdapterName(
PNDIS_STRING Dest,
PNDIS_STRING Src
);
VOID
NdisWanFreeNdisString(
IN PNDIS_STRING NdisString
);
BOOLEAN
NdisWanCompareNdisString(
PNDIS_STRING NdisString1,
PNDIS_STRING NdisString2
);
VOID
NdisWanNdisStringToInteger(
IN PNDIS_STRING Source,
IN PULONG Value
);
VOID
NdisWanCopyNdisString(
OUT PNDIS_STRING Dest,
IN PNDIS_STRING Src
);
#ifndef USE_NDIS_MINIPORT_LOCKING
BOOLEAN
NdisWanAcquireMiniportLock(
PADAPTERCB AdapterCB
);
VOID
NdisWanReleaseMiniportLock(
PADAPTERCB AdapterCB
);
#endif // end of !USE_NDIS_MINIPORT_LOCKING
#endif