mirror of https://github.com/lianthony/NT4.0
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.
1991 lines
36 KiB
1991 lines
36 KiB
/*++
|
|
|
|
Copyright (c) 1990-1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
protos.h
|
|
|
|
Abstract:
|
|
|
|
NDIS wrapper function prototypes
|
|
|
|
Author:
|
|
|
|
|
|
Environment:
|
|
|
|
Kernel mode, FSD
|
|
|
|
Revision History:
|
|
|
|
Jun-95 Jameel Hyder Split up from a monolithic file
|
|
--*/
|
|
|
|
NTSTATUS
|
|
ndisDispatchRequest(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandlePnPRequest(
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandleLoadDriver(
|
|
IN PUNICODE_STRING pDevice
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandleUnloadDriver(
|
|
IN PUNICODE_STRING pDevice
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandleTranslateName(
|
|
IN PUNICODE_STRING pDevice,
|
|
IN PUCHAR Buffer,
|
|
IN UINT BufferLength,
|
|
OUT PUINT AmountCopied
|
|
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandleLegacyTransport(
|
|
IN PUNICODE_STRING pDevice
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisHandleProtocolNotification(
|
|
IN PUNICODE_STRING pDevice
|
|
);
|
|
|
|
VOID
|
|
ndisReferenceAdapterOrMiniportByName(
|
|
IN PUNICODE_STRING pDevice,
|
|
OUT PNDIS_MINIPORT_BLOCK * pMiniport,
|
|
OUT PNDIS_ADAPTER_BLOCK * pAdapter
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisMIsr(
|
|
IN PKINTERRUPT KInterrupt,
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
ndisMDpc(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
ndisMDpcTimer(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
ndisMCoDpc(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
ndisMCoDpcTimer(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
ndisMCoTimerDpc(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
ndisMWakeUpDpc(
|
|
IN PKDPC Dpc,
|
|
IN PVOID Context,
|
|
IN PVOID SystemContext1,
|
|
IN PVOID SystemContext2
|
|
);
|
|
|
|
VOID
|
|
ndisMDeferredTimerDpc(
|
|
IN PKDPC Dpc,
|
|
IN PVOID Context,
|
|
IN PVOID SystemContext1,
|
|
IN PVOID SystemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMChangeEthAddresses(
|
|
IN UINT OldAddressCount,
|
|
IN CHAR OldAddresses[][6],
|
|
IN UINT NewAddressCount,
|
|
IN CHAR NewAddresses[][6],
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMChangeClass(
|
|
IN UINT OldFilterClasses,
|
|
IN UINT NewFilterClasses,
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
VOID
|
|
ndisMCloseAction(
|
|
IN NDIS_HANDLE MacBindingHandle
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMResetFullDuplex(
|
|
IN NDIS_HANDLE NdisBindingHandle
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMReset(
|
|
IN NDIS_HANDLE NdisBindingHandle
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMRequest(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
#if _SEND_PRIORITY
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisMProcessDeferredFullDuplexPrioritySends(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisMProcessDeferredPrioritySends(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
#endif
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisMProcessDeferredFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisMProcessDeferred(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMTransferData(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer,
|
|
IN OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMTransferDataSync(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer,
|
|
IN OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMDummyTransferData(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer,
|
|
IN OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred
|
|
);
|
|
|
|
VOID
|
|
ndisMLazyReturnPackets(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
VOID
|
|
ndisMIndicatePacket(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
//
|
|
// general reference/dereference functions
|
|
//
|
|
|
|
BOOLEAN
|
|
NdisReferenceRef(
|
|
IN PREFERENCE RefP
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
NdisDereferenceRef(
|
|
IN PREFERENCE RefP
|
|
);
|
|
|
|
|
|
VOID
|
|
NdisInitializeRef(
|
|
IN PREFERENCE RefP
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
NdisCloseRef(
|
|
IN PREFERENCE RefP
|
|
);
|
|
|
|
|
|
/*++
|
|
BOOLEAN
|
|
ndisReferenceProtocol(
|
|
IN PNDIS_PROTOCOL_BLOCK ProtP
|
|
);
|
|
--*/
|
|
|
|
#define ndisReferenceProtocol(ProtP) NdisReferenceRef(&(ProtP)->Ref)
|
|
|
|
|
|
VOID
|
|
ndisDereferenceProtocol(
|
|
IN PNDIS_PROTOCOL_BLOCK ProtP
|
|
);
|
|
|
|
|
|
VOID
|
|
ndisDeQueueOpenOnProtocol(
|
|
IN PNDIS_OPEN_BLOCK OpenP,
|
|
IN PNDIS_PROTOCOL_BLOCK ProtP
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
NdisFinishOpen(
|
|
IN PNDIS_OPEN_BLOCK OpenP
|
|
);
|
|
|
|
|
|
VOID
|
|
ndisKillOpenAndNotifyProtocol(
|
|
IN PNDIS_OPEN_BLOCK OldOpenP
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
ndisKillOpen(
|
|
IN PNDIS_OPEN_BLOCK OldOpenP
|
|
);
|
|
|
|
/*++
|
|
BOOLEAN
|
|
ndisReferenceMac(
|
|
IN PNDIS_MAC_BLOCK MacP
|
|
);
|
|
--*/
|
|
#define ndisReferenceMac(MacP) NdisReferenceRef(&(MacP)->Ref)
|
|
|
|
VOID
|
|
ndisDereferenceMac(
|
|
IN PNDIS_MAC_BLOCK MacP
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisQueueAdapterOnMac(
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP,
|
|
IN PNDIS_MAC_BLOCK MacP
|
|
);
|
|
|
|
VOID
|
|
ndisDeQueueAdapterOnMac(
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP,
|
|
IN PNDIS_MAC_BLOCK MacP
|
|
);
|
|
|
|
/*++
|
|
BOOLEAN
|
|
ndisReferenceAdapter(
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP
|
|
);
|
|
--*/
|
|
#define ndisReferenceAdapter(AdaptP) NdisReferenceRef(&(AdaptP)->Ref)
|
|
|
|
|
|
BOOLEAN
|
|
ndisQueueOpenOnAdapter(
|
|
IN PNDIS_OPEN_BLOCK OpenP,
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP
|
|
);
|
|
|
|
VOID
|
|
ndisKillAdapter(
|
|
IN PNDIS_ADAPTER_BLOCK OldAdaptP
|
|
);
|
|
|
|
VOID
|
|
ndisDereferenceAdapter(
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP
|
|
);
|
|
|
|
VOID
|
|
ndisDeQueueOpenOnAdapter(
|
|
IN PNDIS_OPEN_BLOCK OpenP,
|
|
IN PNDIS_ADAPTER_BLOCK AdaptP
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisCheckPortUsage(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG PortNumber,
|
|
IN ULONG Length,
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisCheckMemoryUsage(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG Address,
|
|
IN ULONG Length,
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisStartMapping(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG InitialAddress,
|
|
IN ULONG Length,
|
|
OUT PVOID * InitialMapping,
|
|
OUT PBOOLEAN Mapped
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisEndMapping(
|
|
IN PVOID InitialMapping,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Mapped
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisInitializeAdapter(
|
|
IN PNDIS_M_DRIVER_BLOCK pMiniBlock,
|
|
IN PUNICODE_STRING RegServiceName // Relative to Services key
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisCheckIfPcmciaCardPresent(
|
|
IN PNDIS_M_DRIVER_BLOCK pMiniBlock
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisFixBusInformation(
|
|
IN PNDIS_CONFIGURATION_HANDLE ConfigHandle,
|
|
IN PBUS_SLOT_DB pDb
|
|
);
|
|
|
|
VOID
|
|
ndisAddBusInformation(
|
|
IN PNDIS_CONFIGURATION_HANDLE ConfigHandle,
|
|
IN PBUS_SLOT_DB pDb
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisSearchGlobalDb(
|
|
IN NDIS_INTERFACE_TYPE BusType,
|
|
IN ULONG BusId,
|
|
IN ULONG BusNumber,
|
|
IN ULONG SlotNumber
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisAddGlobalDb(
|
|
IN NDIS_INTERFACE_TYPE BusType,
|
|
IN ULONG BusId,
|
|
IN ULONG BusNumber,
|
|
IN ULONG SlotNumber
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisDeleteGlobalDb(
|
|
IN NDIS_INTERFACE_TYPE BusType,
|
|
IN ULONG BusId,
|
|
IN ULONG BusNumber,
|
|
IN ULONG SlotNumber
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisValidatePcmciaDriver(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
VOID
|
|
ndisQueuedBindNotification(
|
|
IN PQUEUED_PROTOCOL_NOTIFICATION pQPN
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NdisIMInitializeDeviceInstance(
|
|
IN NDIS_HANDLE DriverHandle,
|
|
IN PNDIS_STRING DeviceInstance
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NdisIMRegisterLayeredMiniport(
|
|
IN NDIS_HANDLE NdisWrapperHandle,
|
|
IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
|
|
IN UINT CharacteristicsLength,
|
|
OUT PNDIS_HANDLE DriverHandle
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMInitializeAdapter(
|
|
IN PNDIS_M_DRIVER_BLOCK pMiniDriver,
|
|
IN PNDIS_WRAPPER_CONFIGURATION_HANDLE pConfigurationHandle,
|
|
IN PUNICODE_STRING pExportName,
|
|
IN PBUS_SLOT_DB pDb
|
|
);
|
|
|
|
VOID
|
|
ndisInitializeBindings(
|
|
IN PUNICODE_STRING ExportName,
|
|
IN PUNICODE_STRING ServiceName,
|
|
IN BOOLEAN Synchronous
|
|
);
|
|
|
|
VOID
|
|
ndisQueuedProtocolNotification(
|
|
IN PNDIS_BIND_CONTEXT pContext
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisUpdateDriverInstance(
|
|
IN PUNICODE_STRING BaseString,
|
|
IN PUNICODE_STRING BindString,
|
|
IN PUNICODE_STRING ExportString,
|
|
IN PUNICODE_STRING RouteString
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisCheckProtocolBinding(
|
|
IN PNDIS_PROTOCOL_BLOCK Protocol,
|
|
IN PUNICODE_STRING DeviceName,
|
|
IN PUNICODE_STRING BaseName,
|
|
OUT PUNICODE_STRING ProtocolSection
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisProtocolAlreadyBound(
|
|
IN PNDIS_PROTOCOL_BLOCK Protocol,
|
|
IN PUNICODE_STRING AdapterName
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisUnloadMiniport(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisTranslateMiniportName(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PUCHAR Buffer,
|
|
IN UINT BufferLength,
|
|
OUT PUINT AmountCopied
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisUnloadMac(
|
|
IN PNDIS_ADAPTER_BLOCK Mac
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisTranslateMacName(
|
|
IN PNDIS_ADAPTER_BLOCK Mac,
|
|
IN PUCHAR Buffer,
|
|
IN UINT BufferLength,
|
|
OUT PUINT AmountCopied
|
|
);
|
|
|
|
VOID
|
|
ndisNotifyProtocols(
|
|
IN PNDIS_PROTOCOL_BLOCK pProt
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisInitializeAllAdapterInstances(
|
|
IN PNDIS_MAC_BLOCK MacBlock,
|
|
IN PNDIS_STRING DeviceInstance OPTIONAL
|
|
);
|
|
|
|
/*++
|
|
BOOLEAN
|
|
ndisReferenceDriver(
|
|
IN PNDIS_M_DRIVER_BLOCK DriverP
|
|
);
|
|
--*/
|
|
#define ndisReferenceDriver(DriverP) NdisReferenceRef(&(DriverP)->Ref)
|
|
|
|
|
|
VOID
|
|
ndisDereferenceDriver(
|
|
IN PNDIS_M_DRIVER_BLOCK DriverP
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisQueueMiniportOnDriver(
|
|
IN PNDIS_MINIPORT_BLOCK MiniportP,
|
|
IN PNDIS_M_DRIVER_BLOCK DriverP
|
|
);
|
|
|
|
VOID
|
|
ndisDequeueMiniportOnDriver(
|
|
IN PNDIS_MINIPORT_BLOCK MiniportP,
|
|
IN PNDIS_M_DRIVER_BLOCK DriverP
|
|
);
|
|
|
|
/*++
|
|
BOOLEAN
|
|
ndisReferenceMiniport(
|
|
IN PNDIS_MINIPORT_BLOCK MiniportP
|
|
);
|
|
--*/
|
|
#define ndisReferenceMiniport(MiniportP) NdisReferenceRef(&(MiniportP)->Ref)
|
|
|
|
VOID
|
|
ndisDereferenceMiniport(
|
|
IN PNDIS_MINIPORT_BLOCK MiniportP
|
|
);
|
|
|
|
VOID
|
|
ndisDeQueueOpenOnMiniport(
|
|
IN PNDIS_M_OPEN_BLOCK OpenP,
|
|
IN PNDIS_MINIPORT_BLOCK MiniportP
|
|
);
|
|
|
|
VOID
|
|
ndisInitializePackage(
|
|
IN PPKG_REF pPkg,
|
|
IN PVOID RoutineName
|
|
);
|
|
|
|
VOID
|
|
ndisReferencePackage(
|
|
IN PPKG_REF pPkg
|
|
);
|
|
|
|
VOID
|
|
ndisDereferencePackage(
|
|
IN PPKG_REF pPkg
|
|
);
|
|
|
|
#define ProtocolInitializePackage() ndisInitializePackage(&ProtocolPkg, NdisRegisterProtocol)
|
|
#define MiniportInitializePackage() ndisInitializePackage(&MiniportPkg, ndisMReset)
|
|
#define InitInitializePackage() ndisInitializePackage(&InitPkg, NdisReadConfiguration)
|
|
#define PnPInitializePackage() ndisInitializePackage(&PnPPkg, ndisDispatchRequest)
|
|
#define MacInitializePackage() ndisInitializePackage(&MacPkg, ndisIsr)
|
|
#define CoInitializePackage() ndisInitializePackage(&CoPkg, NdisCmRegisterAddressFamily)
|
|
#define EthInitializePackage() ndisInitializePackage(&EthPkg, EthCreateFilter)
|
|
#define FddiInitializePackage() ndisInitializePackage(&FddiPkg, FddiCreateFilter)
|
|
#define TrInitializePackage() ndisInitializePackage(&TrPkg, TrCreateFilter)
|
|
#define ArcInitializePackage() ndisInitializePackage(&ArcPkg, ArcCreateFilter)
|
|
|
|
#define ProtocolReferencePackage() ndisReferencePackage(&ProtocolPkg)
|
|
#define MiniportReferencePackage() ndisReferencePackage(&MiniportPkg)
|
|
#define InitReferencePackage() ndisReferencePackage(&InitPkg)
|
|
#define PnPReferencePackage() ndisReferencePackage(&PnPPkg)
|
|
#define MacReferencePackage() ndisReferencePackage(&MacPkg)
|
|
#define CoReferencePackage() ndisReferencePackage(&CoPkg)
|
|
#define EthReferencePackage() ndisReferencePackage(&EthPkg)
|
|
#define FddiReferencePackage() ndisReferencePackage(&FddiPkg)
|
|
#define TrReferencePackage() ndisReferencePackage(&TrPkg)
|
|
#define ArcReferencePackage() ndisReferencePackage(&ArcPkg)
|
|
|
|
#define ProtocolDereferencePackage() ndisDereferencePackage(&ProtocolPkg)
|
|
#define MiniportDereferencePackage() ndisDereferencePackage(&MiniportPkg)
|
|
#define InitDereferencePackage() ndisDereferencePackage(&InitPkg)
|
|
#define PnPDereferencePackage() ndisDereferencePackage(&PnPPkg)
|
|
#define MacDereferencePackage() ndisDereferencePackage(&MacPkg)
|
|
#define CoDereferencePackage() ndisDereferencePackage(&CoPkg)
|
|
#define EthDereferencePackage() ndisDereferencePackage(&EthPkg)
|
|
#define FddiDereferencePackage() ndisDereferencePackage(&FddiPkg)
|
|
#define TrDereferencePackage() ndisDereferencePackage(&TrPkg)
|
|
#define ArcDereferencePackage() ndisDereferencePackage(&ArcPkg)
|
|
|
|
//
|
|
// IRP handlers established on behalf of NDIS devices by
|
|
// the wrapper.
|
|
//
|
|
|
|
NTSTATUS
|
|
ndisCreateIrpHandler(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisDeviceControlIrpHandler(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisCloseIrpHandler(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisSuccessIrpHandler(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
ndisLastCountRemovedFunction(
|
|
IN struct _KDPC * Dpc,
|
|
IN PVOID DeferredContext,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisQueueOpenOnProtocol(
|
|
IN PNDIS_OPEN_BLOCK OpenP,
|
|
IN PNDIS_PROTOCOL_BLOCK ProtP
|
|
);
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
VOID
|
|
ndisReadRegistry(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisReadParameters(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisAddMediaTypeToArray(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMacReceiveHandler(
|
|
IN NDIS_HANDLE NdisBindingContext,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN PVOID HeaderBuffer,
|
|
IN UINT HeaderBufferSize,
|
|
IN PVOID LookaheadBuffer,
|
|
IN UINT LookaheadBufferSize,
|
|
IN UINT PacketSize
|
|
);
|
|
|
|
VOID
|
|
ndisMacReceiveCompleteHandler(
|
|
IN NDIS_HANDLE NdisBindingContext
|
|
);
|
|
|
|
PNDIS_OPEN_BLOCK
|
|
ndisGetOpenBlockFromProtocolBindingContext(
|
|
IN NDIS_HANDLE ProtocolBindingContext
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisShutdown(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
ndisUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisIsr(
|
|
IN PKINTERRUPT Interrupt,
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
ndisDpc(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
//
|
|
// Dma operations
|
|
//
|
|
|
|
extern
|
|
IO_ALLOCATION_ACTION
|
|
ndisDmaExecutionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID MapRegisterBase,
|
|
IN PVOID Context
|
|
);
|
|
|
|
|
|
//
|
|
// Map Registers
|
|
//
|
|
|
|
extern
|
|
IO_ALLOCATION_ACTION
|
|
ndisAllocationExecutionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID MapRegisterBase,
|
|
IN PVOID Context
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMProcessResetRequested(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
OUT PBOOLEAN pAddressingReset
|
|
);
|
|
|
|
|
|
#undef NdisMResetComplete
|
|
|
|
EXPORT
|
|
VOID
|
|
NdisMResetComplete(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN NDIS_STATUS Status,
|
|
IN BOOLEAN AddressingReset
|
|
);
|
|
|
|
VOID
|
|
ndisMResetCompleteFullDuplex(
|
|
IN NDIS_HANDLE Miniport,
|
|
IN NDIS_STATUS Status,
|
|
IN BOOLEAN AddressingReset
|
|
);
|
|
|
|
VOID
|
|
ndisMResetCompleteCommonStep1(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_STATUS Status,
|
|
IN BOOLEAN AddressingReset
|
|
);
|
|
|
|
VOID
|
|
ndisMResetCompleteCommonStep2(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
ndisMWanSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE NdisLinkHandle,
|
|
IN PVOID Packet
|
|
);
|
|
|
|
VOID
|
|
NdisMWanSendComplete(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN PNDIS_PACKET Packet,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ndisSaveParameters(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ndisSaveLinkage(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ndisCheckRoute(
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
VOID
|
|
ndisMHaltMiniport(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMAllocateRequest(
|
|
OUT PNDIS_REQUEST * pRequest,
|
|
IN NDIS_REQUEST_TYPE RequestType,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID Buffer,
|
|
IN ULONG BufferLength
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMFilterOutStatisticsOids(
|
|
PNDIS_MINIPORT_BLOCK Miniport,
|
|
PNDIS_REQUEST Request
|
|
);
|
|
|
|
// VOID
|
|
// ndisMFreeInternalRequest(
|
|
// PVOID PRequest
|
|
// )
|
|
#define ndisMFreeInternalRequest(_pRequest) FREE_POOL(_pRequest)
|
|
|
|
//
|
|
// Some Wan functions that crept in because
|
|
// the send/receive paths for WAN drivers is different
|
|
//
|
|
|
|
VOID
|
|
NdisMWanIndicateReceive(
|
|
OUT PNDIS_STATUS Status,
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN NDIS_HANDLE NdisLinkContext,
|
|
IN PUCHAR Packet,
|
|
IN ULONG PacketSize
|
|
);
|
|
|
|
VOID
|
|
NdisMWanIndicateReceiveComplete(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN NDIS_HANDLE NdisLinkContext
|
|
);
|
|
|
|
VOID
|
|
ndisMTimerDpc(
|
|
IN PKDPC Dpc,
|
|
IN PVOID Context,
|
|
IN PVOID SystemContext1,
|
|
IN PVOID SystemContext2
|
|
);
|
|
|
|
VOID
|
|
ndisMAbortPacketsAndRequests(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
VOID
|
|
ndisMAbortQueryStatisticsRequest(
|
|
IN PNDIS_REQUEST Request,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMIndicateLoopback(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMIsLoopbackPacket(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMDoRequests(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
VOID
|
|
ndisMCopyFromPacketToBuffer(
|
|
IN PNDIS_PACKET Packet,
|
|
IN UINT Offset,
|
|
IN UINT BytesToCopy,
|
|
OUT PCHAR Buffer,
|
|
OUT PUINT BytesCopied
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisMShutdown(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
ndisMUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisMQueryOidList(
|
|
IN PNDIS_USER_OPEN_CONTEXT OpenContext,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisSplitStatisticsOids(
|
|
IN PNDIS_USER_OPEN_CONTEXT OpenContext,
|
|
IN PNDIS_OID OidList,
|
|
IN ULONG NumOids
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisValidOid(
|
|
IN PNDIS_USER_OPEN_CONTEXT OpenContext,
|
|
IN NDIS_OID Oid
|
|
);
|
|
|
|
VOID
|
|
ndisQueuedCompleteOpenAdapter(
|
|
IN PQUEUED_OPEN_CLOSE pQoC
|
|
);
|
|
|
|
VOID
|
|
ndisQueuedCompleteCloseAdapter(
|
|
IN PQUEUED_OPEN_CLOSE pQoC
|
|
);
|
|
|
|
VOID
|
|
ndisMFinishClose(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_M_OPEN_BLOCK Open
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisMKillOpen(
|
|
IN PNDIS_OPEN_BLOCK OldOpenP
|
|
);
|
|
|
|
NTSTATUS
|
|
ndisQueryOidList(
|
|
IN PNDIS_USER_OPEN_CONTEXT OpenContext,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
ndisBugcheckHandler(
|
|
IN PNDIS_WRAPPER_CONTEXT WrapperContext,
|
|
IN ULONG Size
|
|
);
|
|
|
|
|
|
VOID
|
|
ndisMUndoBogusFilters(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
LONG
|
|
ndisMDoMiniportOp(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN BOOLEAN Query,
|
|
IN ULONG Oid,
|
|
IN PVOID Buf,
|
|
IN LONG BufSize,
|
|
IN LONG ErrorCodesToReturn
|
|
);
|
|
|
|
VOID
|
|
ndisMOpenAdapter(
|
|
OUT PNDIS_STATUS Status,
|
|
OUT PNDIS_STATUS OpenErrorStatus,
|
|
OUT PNDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE NdisProtocolHandle,
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN PNDIS_STRING AdapterName,
|
|
IN UINT OpenOptions,
|
|
IN PSTRING AddressingInformation,
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_OPEN_BLOCK NewOpenP,
|
|
IN PFILE_OBJECT FileObject,
|
|
IN BOOLEAN UsingEncapsulation
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMFinishPendingOpen(
|
|
PMINIPORT_PENDING_OPEN MiniportPendingOpen
|
|
);
|
|
|
|
VOID
|
|
ndisMFinishQueuedPendingOpen(
|
|
IN PMINIPORT_PENDING_OPEN MiniportPendingOpen
|
|
);
|
|
|
|
VOID
|
|
ndisMResetCleanup(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN BOOLEAN Synchronous
|
|
);
|
|
|
|
VOID
|
|
ndisMSyncQueryInformationComplete(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
VOID
|
|
ndisMSyncSetInformationComplete(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
VOID
|
|
ndisMRequestQueryInformationPost(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
VOID
|
|
ndisMRequestSetInformationPost(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
|
|
VOID
|
|
ndisMQueueRequest(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request,
|
|
IN PNDIS_M_OPEN_BLOCK Open
|
|
);
|
|
|
|
VOID
|
|
ndisMRestoreFilterSettings(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_M_OPEN_BLOCK Open
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetPacketFilter(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetCurrentLookahead(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetMulticastList(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
//
|
|
// EthFilterxxx
|
|
//
|
|
BOOLEAN
|
|
EthFindMulticast(
|
|
IN UINT NumberOfAddresses,
|
|
IN CHAR AddressArray[][ETH_LENGTH_OF_ADDRESS],
|
|
IN CHAR MulticastAddress[ETH_LENGTH_OF_ADDRESS],
|
|
OUT PUINT ArrayIndex
|
|
);
|
|
|
|
VOID
|
|
ethUndoFilterAdjust(
|
|
IN PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
ethUndoChangeFilterAddresses(
|
|
IN PETH_FILTER Filter
|
|
);
|
|
|
|
VOID
|
|
ethRemoveBindingFromLists(
|
|
IN PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
ethRemoveAndFreeBinding(
|
|
IN PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding,
|
|
IN BOOLEAN fCallCloseAction
|
|
);
|
|
|
|
VOID
|
|
ethUpdateDirectedBindingList(
|
|
IN OUT PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddBindingToList
|
|
);
|
|
|
|
VOID
|
|
ethUpdateBroadcastBindingList(
|
|
IN OUT PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddToList
|
|
);
|
|
|
|
VOID
|
|
ethUpdateSpecificBindingLists(
|
|
IN OUT PETH_FILTER Filter,
|
|
IN PETH_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
EthFilterDprIndicateReceiveFullMac(
|
|
IN PETH_FILTER Filter,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN PCHAR Address,
|
|
IN PVOID HeaderBuffer,
|
|
IN UINT HeaderBufferSize,
|
|
IN PVOID LookaheadBuffer,
|
|
IN UINT LookaheadBufferSize,
|
|
IN UINT PacketSize
|
|
);
|
|
|
|
VOID
|
|
EthFilterDprIndicateReceiveCompleteFullMac(
|
|
IN PETH_FILTER Filter
|
|
);
|
|
|
|
//
|
|
// FddiFilterxxxx
|
|
//
|
|
|
|
VOID
|
|
fddiRemoveBindingFromLists(
|
|
IN PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
fddiRemoveAndFreeBinding(
|
|
IN PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding,
|
|
IN BOOLEAN fCallCloseAction
|
|
);
|
|
|
|
BOOLEAN
|
|
FddiFindMulticastLongAddress(
|
|
IN UINT NumberOfAddresses,
|
|
IN CHAR AddressArray[][FDDI_LENGTH_OF_LONG_ADDRESS],
|
|
IN CHAR MulticastAddress[FDDI_LENGTH_OF_LONG_ADDRESS],
|
|
OUT PUINT ArrayIndex
|
|
);
|
|
|
|
BOOLEAN
|
|
FddiFindMulticastShortAddress(
|
|
IN UINT NumberOfAddresses,
|
|
IN CHAR AddressArray[][FDDI_LENGTH_OF_SHORT_ADDRESS],
|
|
IN CHAR MulticastAddress[FDDI_LENGTH_OF_SHORT_ADDRESS],
|
|
OUT PUINT ArrayIndex
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMChangeFddiAddresses(
|
|
IN UINT oldLongAddressCount,
|
|
IN CHAR oldLongAddresses[][6],
|
|
IN UINT newLongAddressCount,
|
|
IN CHAR newLongAddresses[][6],
|
|
IN UINT oldShortAddressCount,
|
|
IN CHAR oldShortAddresses[][2],
|
|
IN UINT newShortAddressCount,
|
|
IN CHAR newShortAddresses[][2],
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
VOID
|
|
fddiUpdateSpecificBindingLists(
|
|
IN OUT PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
fddiUpdateDirectedBindingList(
|
|
IN OUT PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddToList
|
|
);
|
|
|
|
VOID
|
|
fddiUpdateBroadcastBindingList(
|
|
IN OUT PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddToList
|
|
);
|
|
|
|
VOID
|
|
fddiUndoFilterAdjust(
|
|
IN OUT PFDDI_FILTER Filter,
|
|
IN PFDDI_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
fddiUndoChangeFilterLongAddresses(
|
|
IN PFDDI_FILTER Filter
|
|
);
|
|
|
|
VOID
|
|
fddiUndoChangeFilterShortAddresses(
|
|
IN PFDDI_FILTER Filter
|
|
);
|
|
|
|
VOID
|
|
FddiFilterDprIndicateReceiveFullMac(
|
|
IN PFDDI_FILTER Filter,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN PCHAR Address,
|
|
IN UINT AddressLength,
|
|
IN PVOID HeaderBuffer,
|
|
IN UINT HeaderBufferSize,
|
|
IN PVOID LookaheadBuffer,
|
|
IN UINT LookaheadBufferSize,
|
|
IN UINT PacketSize
|
|
);
|
|
|
|
VOID
|
|
FddiFilterDprIndicateReceiveCompleteFullMac(
|
|
IN PFDDI_FILTER Filter
|
|
);
|
|
|
|
//
|
|
// TrFilterxxx
|
|
//
|
|
VOID
|
|
trRemoveBindingFromLists(
|
|
IN PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
trRemoveAndFreeBinding(
|
|
IN PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding,
|
|
IN BOOLEAN fCallCloseAction
|
|
);
|
|
|
|
VOID
|
|
trUpdateDirectedBindingList(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddBindingToList
|
|
);
|
|
|
|
VOID
|
|
trUpdateBroadcastBindingList(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding,
|
|
IN BOOLEAN fAddBindingToList
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMChangeFunctionalAddress(
|
|
IN TR_FUNCTIONAL_ADDRESS OldFunctionalAddress,
|
|
IN TR_FUNCTIONAL_ADDRESS NewFunctionalAddress,
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMChangeGroupAddress(
|
|
IN TR_FUNCTIONAL_ADDRESS OldGroupAddress,
|
|
IN TR_FUNCTIONAL_ADDRESS NewGroupAddress,
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest,
|
|
IN BOOLEAN Set
|
|
);
|
|
|
|
VOID
|
|
trUpdateSpecificBindingLists(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
trUndoFilterAdjust(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
trUndoChangeFunctionalAddress(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
trUndoChangeGroupAddress(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
trCompleteChangeGroupAddress(
|
|
IN OUT PTR_FILTER Filter,
|
|
IN PTR_BINDING_INFO Binding
|
|
);
|
|
|
|
VOID
|
|
TrFilterDprIndicateReceiveFullMac(
|
|
IN PTR_FILTER Filter,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN PVOID HeaderBuffer,
|
|
IN UINT HeaderBufferSize,
|
|
IN PVOID LookaheadBuffer,
|
|
IN UINT LookaheadBufferSize,
|
|
IN UINT PacketSize
|
|
);
|
|
|
|
VOID
|
|
TrFilterDprIndicateReceiveCompleteFullMac(
|
|
IN PTR_FILTER Filter
|
|
);
|
|
|
|
//
|
|
// ArcFilterxxx
|
|
//
|
|
VOID
|
|
ndisMArcCopyFromBufferToPacket(
|
|
IN PCHAR Buffer,
|
|
IN UINT BytesToCopy,
|
|
IN PNDIS_PACKET Packet,
|
|
IN UINT Offset,
|
|
OUT PUINT BytesCopied
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMArcnetSendLoopback(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMArcnetSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMBuildArcnetHeader(
|
|
PNDIS_MINIPORT_BLOCK Miniport,
|
|
PNDIS_M_OPEN_BLOCK Open,
|
|
PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMFreeArcnetHeader(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ArcDeleteFilter(
|
|
IN PARC_FILTER Filter
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
ndisMArcTransferData(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer,
|
|
IN OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred
|
|
);
|
|
|
|
VOID
|
|
ndisMArcIndicateEthEncapsulatedReceive(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PVOID HeaderBuffer,
|
|
IN PVOID DataBuffer,
|
|
IN UINT Length
|
|
);
|
|
|
|
VOID
|
|
arcUndoFilterAdjust(
|
|
IN PARC_FILTER Filter,
|
|
IN PARC_BINDING_INFO Binding
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ArcConvertOidListToEthernet(
|
|
IN PNDIS_OID OidList,
|
|
IN PULONG NumberOfOids
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ArcAllocateBuffers(
|
|
IN PARC_FILTER Filter
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ArcAllocatePackets(
|
|
IN PARC_FILTER Filter
|
|
);
|
|
|
|
VOID
|
|
ArcDiscardPacketBuffers(
|
|
IN PARC_FILTER Filter,
|
|
IN PARC_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ArcDestroyPacket(
|
|
IN PARC_FILTER Filter,
|
|
IN PARC_PACKET Packet
|
|
);
|
|
|
|
BOOLEAN
|
|
ArcConvertToNdisPacket(
|
|
IN PARC_FILTER Filter,
|
|
IN PARC_PACKET Packet,
|
|
IN BOOLEAN ConvertWholePacket
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetFunctionalAddress(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetGroupAddress(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetFddiMulticastList(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request,
|
|
IN BOOLEAN fShort
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSetInformation(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryCurrentPacketFilter(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryMediaSupported(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryEthernetMulticastList(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryLongMulticastList(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryShortMulticastList(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryMaximumFrameSize(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryMaximumTotalSize(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryNetworkAddress(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMQueryInformation(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_REQUEST Request
|
|
);
|
|
|
|
//
|
|
// WORK ITEM ROUTINES.
|
|
//
|
|
VOID
|
|
FASTCALL
|
|
ndisMDeQueueWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID * WorkItemContext1,
|
|
OUT PVOID * WorkItemContext2
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisMDeQueueWorkItemFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisMQueueWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisMQueueWorkItemFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisMQueueNewWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisMQueueNewWorkItemFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisIMDeQueueWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
ndisIMDeQueueWorkItemFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisIMQueueWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
NDIS_STATUS
|
|
FASTCALL
|
|
ndisIMQueueNewWorkItem(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN NDIS_WORK_ITEM_TYPE WorkItemType,
|
|
OUT PVOID WorkItemContext1,
|
|
OUT PVOID WorkItemContext2
|
|
);
|
|
|
|
//
|
|
// SEND HANDLERS
|
|
//
|
|
//
|
|
|
|
NDIS_STATUS FASTCALL
|
|
ndisMSyncSend(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
#undef NdisMSendResourcesAvailable
|
|
|
|
VOID
|
|
NdisMSendResourcesAvailable(
|
|
IN NDIS_HANDLE MiniportAdapterHandle
|
|
);
|
|
|
|
VOID
|
|
ndisMSendResourcesAvailableFullDuplex(
|
|
IN NDIS_HANDLE MiniportAdapterHandle
|
|
);
|
|
|
|
#undef NdisMSendComplete
|
|
|
|
VOID
|
|
NdisMSendComplete(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN PNDIS_PACKET Packet,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
VOID
|
|
ndisMSendCompleteFullDuplex(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN PNDIS_PACKET Packet,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMStartSendPacketsFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMStartSendsFullDuplex(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMStartSendPackets(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
BOOLEAN
|
|
FASTCALL
|
|
ndisMStartSends(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSendFullDuplexToSendPackets(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMSendPacketsFullDuplex(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSendToSendPackets(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMSendPackets(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
VOID
|
|
ndisMSendPacketsFullDuplexToSend(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSendFullDuplex(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMSendPacketsToSend(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMSendPacketsToFullMac(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
VOID
|
|
ndisMResetSendPackets(
|
|
IN PNDIS_OPEN_BLOCK NdisOpenBlock,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMResetSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMResetWanSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE NdisLinkHandle,
|
|
IN PVOID Packet
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
ndisMCoSendPackets(
|
|
IN NDIS_HANDLE NdisVcHandle,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMRejectSend(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
VOID
|
|
ndisMRejectSendPackets(
|
|
IN PNDIS_OPEN_BLOCK OpenBlock,
|
|
IN PPNDIS_PACKET Packets,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisMWrappedRequest(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
#undef NdisMStartBufferPhysicalMapping
|
|
#undef NdisMCompleteBufferPhysicalMapping
|
|
|
|
VOID
|
|
NdisMStartBufferPhysicalMapping(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN PNDIS_BUFFER Buffer,
|
|
IN ULONG PhysicalMapRegister,
|
|
IN BOOLEAN WriteToDevice,
|
|
OUT PNDIS_PHYSICAL_ADDRESS_UNIT PhysicalAddressArray,
|
|
OUT PUINT ArraySize
|
|
);
|
|
|
|
VOID
|
|
NdisMCompleteBufferPhysicalMapping(
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN PNDIS_BUFFER Buffer,
|
|
IN ULONG PhysicalMapRegister
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisAddResource(
|
|
OUT PCM_RESOURCE_LIST *pResources,
|
|
IN PCM_PARTIAL_RESOURCE_DESCRIPTOR NewResource,
|
|
IN NDIS_INTERFACE_TYPE AdapterType,
|
|
IN ULONG BusNumber,
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PNDIS_STRING AdapterName
|
|
);
|
|
|
|
NDIS_STATUS
|
|
ndisRemoveResource(
|
|
OUT PCM_RESOURCE_LIST *pResources,
|
|
IN PCM_PARTIAL_RESOURCE_DESCRIPTOR DeadResource,
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PNDIS_STRING AdapterName
|
|
);
|
|
|
|
VOID
|
|
ndisMReleaseResources(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport
|
|
);
|
|
|
|
|
|
//
|
|
// Co-Ndis prototypes
|
|
//
|
|
VOID
|
|
ndisMNotifyAfRegistration(
|
|
IN PNDIS_MINIPORT_BLOCK Miniport,
|
|
IN PCO_ADDRESS_FAMILY AddressFamily OPTIONAL
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisReferenceAf(
|
|
IN PNDIS_CO_AF_BLOCK AfBlock
|
|
);
|
|
|
|
VOID
|
|
ndisDereferenceAf(
|
|
IN PNDIS_CO_AF_BLOCK AfBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisReferenceSap(
|
|
IN PNDIS_CO_SAP_BLOCK SapBlock
|
|
);
|
|
|
|
VOID
|
|
ndisDereferenceSap(
|
|
IN PNDIS_CO_SAP_BLOCK SapBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
ndisReferenceVc(
|
|
IN PNDIS_CO_VC_BLOCK AfBlock
|
|
);
|
|
|
|
VOID
|
|
ndisDereferenceVc(
|
|
IN PNDIS_CO_VC_BLOCK AfBlock
|
|
);
|
|
|
|
VOID
|
|
ndisMCoFreeResources(
|
|
PNDIS_M_OPEN_BLOCK Open
|
|
);
|
|
|
|
//
|
|
// If we are on an x86 box and internal debugging is enabled
|
|
// then we prototype the following.
|
|
//
|
|
#if _DBG && defined(_M_IX86) && defined(_NDIS_INTERNAL_DEBUG)
|
|
|
|
EXPORT
|
|
VOID
|
|
NdisMSetWriteBreakPoint(
|
|
IN PVOID LinearAddress
|
|
);
|
|
|
|
EXPORT
|
|
VOID
|
|
NdisMClearWriteBreakPoint(
|
|
IN PVOID LinearAddress
|
|
);
|
|
|
|
#else
|
|
|
|
#define NdisMSetWriteBreakPoint(LinearAddress)
|
|
#define NdisMClearWriteBreakPoint(LinearAddress)
|
|
|
|
#endif
|
|
|
|
#if TRACK_MEMORY
|
|
|
|
extern
|
|
PVOID
|
|
AllocateM(
|
|
IN UINT Size,
|
|
IN ULONG ModLine,
|
|
IN ULONG Tag
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
FreeM(
|
|
IN PVOID MemPtr
|
|
);
|
|
|
|
#endif
|