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.
 
 
 
 
 
 

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