/*++ 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 DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ); #if NDIS_UNLOAD VOID ndisUnload( IN PDRIVER_OBJECT DriverObject ); #endif NTSTATUS ndisBuildDeviceAcl( OUT PACL *DeviceAcl, IN BOOLEAN AddNetConfigOps ); NTSTATUS ndisCreateSecurityDescriptor( IN PDEVICE_OBJECT DeviceObject, OUT PSECURITY_DESCRIPTOR * pSecurityDescriptor, BOOLEAN AddNetConfigOps ); BOOLEAN ndisCheckAccess ( PIRP Irp, PIO_STACK_LOCATION IrpSp, PNTSTATUS Status, PSECURITY_DESCRIPTOR SecurityDescriptor ); VOID ndisReadRegistry( VOID ); VOID ndisWorkerThread( IN PVOID Context ); NTSTATUS ndisReadRegParameters( IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext ); NTSTATUS ndisReadProcessorAffinityMask( 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 ndisCloseAllBindingsOnProtocol( PNDIS_PROTOCOL_BLOCK Protocol ); BOOLEAN ndisIMCheckDeviceInstance( IN PNDIS_M_DRIVER_BLOCK MiniBlock, IN PUNICODE_STRING DeviceInstance, OUT PNDIS_HANDLE DeviceContext OPTIONAL ); NDIS_STATUS ndisIMInitializeDeviceInstance( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_HANDLE DeviceContext, IN BOOLEAN fStartIrp ); NDIS_STATUS ndisIMQueueDeviceInstance( IN PNDIS_M_DRIVER_BLOCK MiniBlock, IN PNDIS_STRING DeviceInstance, IN NDIS_HANDLE DeviceContext ); NTSTATUS FASTCALL ndisPnPQueryRemoveDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS FASTCALL ndisPnPCancelRemoveDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS FASTCALL ndisPnPRemoveDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp OPTIONAL ); VOID ndisSetDeviceNames( IN PNDIS_STRING ExportName, OUT PNDIS_STRING DeviceName, OUT PNDIS_STRING BaseName, IN PUCHAR Buffer ); NTSTATUS FASTCALL ndisPnPQueryStopDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS FASTCALL ndisPnPCancelStopDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS FASTCALL ndisPnPStopDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NDIS_STATUS ndisTranslateResources( IN PNDIS_MINIPORT_BLOCK Miniport, IN CM_RESOURCE_TYPE ResourceType, IN PHYSICAL_ADDRESS Resource, OUT PPHYSICAL_ADDRESS pTranslatedResource, OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor OPTIONAL ); NTSTATUS FASTCALL ndisQueryBusInterface( IN PNDIS_MINIPORT_BLOCK Miniport ); ULONG ndisGetSetBusConfigSpace( IN PNDIS_MINIPORT_BLOCK Miniport, IN ULONG Offset, IN PVOID Buffer, IN ULONG Length, IN ULONG WhichSpace, IN BOOLEAN Read ); VOID FASTCALL ndisReinitializeMiniportBlock( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisCheckAdapterBindings( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PROTOCOL_BLOCK Protocol OPTIONAL ); NDIS_STATUS FASTCALL ndisPnPStartDevice( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NTSTATUS ndisQueryReferenceBusInterface( IN PDEVICE_OBJECT PnpDeviceObject, OUT PBUS_INTERFACE_REFERENCE * BusInterface ); NTSTATUS ndisPnPAddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject ); NTSTATUS ndisAddDevice( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING pExportName, IN PDEVICE_OBJECT PhysicalDeviceObject, IN ULONG Characteristics ); NTSTATUS ndisWritePnPCapabilities( IN PNDIS_MINIPORT_BLOCK Miniport, IN ULONG PnPCapabilities ); NDIS_STATUS ndisRegisterMiniportDriver( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, IN UINT CharacteristicsLength, OUT PNDIS_HANDLE DriverHandle ); NTSTATUS ndisDispatchRequest( IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp ); NTSTATUS FASTCALL ndisHandlePnPRequest( IN PIRP pIrp ); NTSTATUS FASTCALL ndisHandleLegacyTransport( IN PUNICODE_STRING pDevice ); NTSTATUS FASTCALL ndisHandleProtocolBindNotification( IN PUNICODE_STRING pDevice, IN PUNICODE_STRING Protocol ); NTSTATUS FASTCALL ndisHandleProtocolUnbindNotification( IN PUNICODE_STRING pDevice, IN PUNICODE_STRING Protocol ); NTSTATUS ndisHandleProtocolReconfigNotification( IN PUNICODE_STRING pDevice, IN PUNICODE_STRING Protocol, IN PVOID ReConfigBuffer, IN UINT ReConfigBufferSize, IN UINT Operation ); NTSTATUS FASTCALL ndisHandleProtocolUnloadNotification( IN PUNICODE_STRING Protocol ); NTSTATUS FASTCALL ndisHandleOrphanDevice( IN PUNICODE_STRING pDevice ); NTSTATUS FASTCALL ndisHandleUModePnPOp( IN PNDIS_PNP_OPERATION PnPOp ); NTSTATUS FASTCALL ndisEnumerateInterfaces( IN PNDIS_ENUM_INTF EnumIntf, IN UINT BufferLength ); #if defined(_WIN64) NTSTATUS FASTCALL ndisEnumerateInterfaces32( IN PNDIS_ENUM_INTF32 EnumIntf, IN UINT BufferLength ); #endif // _WIN64 VOID ndisFindRootDevice( IN PNDIS_STRING DeviceName, IN BOOLEAN fTester, OUT PNDIS_STRING * pBindDeviceName, OUT PNDIS_STRING * pRootDeviceName, OUT PNDIS_MINIPORT_BLOCK * pMiniport ); PNDIS_MINIPORT_BLOCK ndisFindMiniportOnGlobalList( IN PNDIS_STRING DeviceName ); NTSTATUS ndisUnbindProtocol( IN PNDIS_OPEN_BLOCK Open, IN BOOLEAN Notify ); VOID ndisReferenceMiniportByName( IN PUNICODE_STRING DeviceName, OUT PNDIS_MINIPORT_BLOCK * pMiniport ); PNDIS_OPEN_BLOCK FASTCALL ndisMapOpenByName( IN PUNICODE_STRING DeviceName, IN PNDIS_PROTOCOL_BLOCK Protocol, IN BOOLEAN Reference, IN BOOLEAN fUnbinding ); VOID NdisMCancelTimer( IN PNDIS_MINIPORT_TIMER Timer, OUT PBOOLEAN TimerCancelled ); // // general reference/dereference functions // BOOLEAN FASTCALL ndisReferenceRef( IN PREFERENCE RefP ); BOOLEAN FASTCALL ndisDereferenceRef( IN PREFERENCE RefP ); VOID FASTCALL ndisInitializeRef( IN PREFERENCE RefP ); BOOLEAN FASTCALL ndisCloseRef( IN PREFERENCE RefP ); BOOLEAN FASTCALL ndisReferenceULongRef( IN PULONG_REFERENCE RefP ); VOID FASTCALL ndisReferenceULongRefNoCheck( IN PULONG_REFERENCE RefP ); BOOLEAN FASTCALL ndisDereferenceULongRef( IN PULONG_REFERENCE RefP ); VOID FASTCALL ndisInitializeULongRef( IN PULONG_REFERENCE RefP ); BOOLEAN FASTCALL ndisCloseULongRef( IN PULONG_REFERENCE RefP ); #if DBG BOOLEAN FASTCALL ndisReferenceProtocol( IN PNDIS_PROTOCOL_BLOCK Protocol ); #else #define ndisReferenceProtocol(ProtP) ndisReferenceRef(&(ProtP)->Ref) #endif NTSTATUS FASTCALL ndisReferenceProtocolByName( IN PUNICODE_STRING ProtocolName, IN OUT PNDIS_PROTOCOL_BLOCK * Protocol, IN BOOLEAN fPartialMatch ); VOID FASTCALL ndisDereferenceProtocol( IN PNDIS_PROTOCOL_BLOCK Protocol ); VOID FASTCALL ndisDeQueueOpenOnProtocol( IN PNDIS_OPEN_BLOCK Open, IN PNDIS_PROTOCOL_BLOCK Protocol ); BOOLEAN ndisCheckPortUsage( IN ULONG PortNumber, IN PNDIS_MINIPORT_BLOCK Miniport, OUT PULONG pTranslatedPort, OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor ); VOID ndisImmediateReadWritePort( IN NDIS_HANDLE WrapperConfigurationContext, IN ULONG Port, IN OUT PVOID Data, IN ULONG Size, IN BOOLEAN Read ); BOOLEAN ndisCheckMemoryUsage( IN ULONG Address, IN PNDIS_MINIPORT_BLOCK Miniport, OUT PULONG pTranslatedAddress, OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor ); VOID ndisImmediateReadWriteSharedMemory( IN NDIS_HANDLE WrapperConfigurationContext, IN ULONG SharedMemoryAddress, OUT PUCHAR Buffer, IN ULONG Length, IN BOOLEAN Read ); NTSTATUS ndisStartMapping( IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN ULONG InitialAddress, IN ULONG Length, IN ULONG AddressSpace, 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 PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING RegServiceName, IN NDIS_HANDLE DeviceContext OPTIONAL ); BOOLEAN ndisWmiGuidIsAdapterSpecific( IN LPGUID guid ); NTSTATUS ndisCreateAdapterInstanceName( OUT PUNICODE_STRING * pAdapterInstanceName, IN PDEVICE_OBJECT PhysicalDeviceObject ); NDIS_STATUS ndisInitializeConfiguration( OUT PNDIS_WRAPPER_CONFIGURATION_HANDLE pConfigurationHandle, IN PNDIS_MINIPORT_BLOCK Miniport, IN PUNICODE_STRING pExportName ); NTSTATUS ndisReadBindPaths( IN PNDIS_MINIPORT_BLOCK Miniport, IN PRTL_QUERY_REGISTRY_TABLE LQueryTable ); NDIS_STATUS ndisMInitializeAdapter( IN PNDIS_M_DRIVER_BLOCK pMiniDriver, IN PNDIS_WRAPPER_CONFIGURATION_HANDLE pConfigurationHandle, IN PUNICODE_STRING pExportName, IN NDIS_HANDLE DeviceContext OPTIONAL ); VOID FASTCALL ndisInitializeBinding( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PROTOCOL_BLOCK Protocol ); BOOLEAN FASTCALL ndisProtocolAlreadyBound( IN PNDIS_PROTOCOL_BLOCK Protocol, IN PNDIS_MINIPORT_BLOCK Miniport ); NTSTATUS FASTCALL ndisMShutdownMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); NDIS_STATUS FASTCALL ndisCloseMiniportBindings( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisCheckProtocolBindings( IN PNDIS_PROTOCOL_BLOCK Protocol ); VOID ndisMQueuedAllocateSharedHandler( IN PASYNC_WORKITEM pWorkItem ); VOID ndisMQueuedFreeSharedHandler( IN PASYNC_WORKITEM pWorkItem ); /*++ BOOLEAN ndisReferenceDriver( IN PNDIS_M_DRIVER_BLOCK DriverP ); --*/ #define ndisReferenceDriver(DriverP) ndisReferenceRef(&(DriverP)->Ref) VOID FASTCALL ndisDereferenceDriver( IN PNDIS_M_DRIVER_BLOCK DriverP, IN BOOLEAN fGlobalLockHeld ); BOOLEAN FASTCALL ndisQueueMiniportOnDriver( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_M_DRIVER_BLOCK Driver ); VOID FASTCALL ndisDeQueueMiniportOnDriver( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_M_DRIVER_BLOCK Driver ); /*++ BOOLEAN FASTCALL ndisReferenceMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); --*/ #if DBG BOOLEAN FASTCALL ndisReferenceMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); #else #define ndisReferenceMiniport(Miniport) ndisReferenceULongRef(&(Miniport)->Ref) #endif #ifdef TRACK_MINIPORT_REFCOUNTS BOOLEAN ndisReferenceMiniportAndLog( IN PNDIS_MINIPORT_BLOCK Miniport, IN UINT Line, IN UINT Module ); BOOLEAN ndisReferenceMiniportAndLogCreate( IN PNDIS_MINIPORT_BLOCK Miniport, IN UINT Line, IN UINT Module, IN PIRP Irp ); #endif VOID FASTCALL ndisDereferenceMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisDeQueueOpenOnMiniport( IN PNDIS_OPEN_BLOCK MiniportOpen, IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisInitializePackage( IN PPKG_REF pPkg ); VOID FASTCALL ndisReferencePackage( IN PPKG_REF pPkg ); VOID FASTCALL ndisDereferencePackage( IN PPKG_REF pPkg ); #define ProtocolReferencePackage() ndisReferencePackage(&ndisPkgs[NDSP_PKG]) #define MiniportReferencePackage() ndisReferencePackage(&ndisPkgs[NDSM_PKG]) #define PnPReferencePackage() ndisReferencePackage(&ndisPkgs[NPNP_PKG]) #define CoReferencePackage() ndisReferencePackage(&ndisPkgs[NDCO_PKG]) #define EthReferencePackage() ndisReferencePackage(&ndisPkgs[NDSE_PKG]) #define FddiReferencePackage() ndisReferencePackage(&ndisPkgs[NDSF_PKG]) #define TrReferencePackage() ndisReferencePackage(&ndisPkgs[NDST_PKG]) #define ArcReferencePackage() ndisReferencePackage(&ndisPkgs[NDSA_PKG]) #define ProtocolDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSP_PKG]) #define MiniportDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSM_PKG]) #define PnPDereferencePackage() ndisDereferencePackage(&ndisPkgs[NPNP_PKG]) #define CoDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDCO_PKG]) #define EthDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSE_PKG]) #define FddiDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSF_PKG]) #define TrDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDST_PKG]) #define ArcDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSA_PKG]) // // 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 ndisDummyIrpHandler( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); VOID ndisCancelLogIrp( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); NDIS_STATUS FASTCALL ndisMGetLogData( IN PNDIS_MINIPORT_BLOCK Miniport, IN PIRP Irp ); BOOLEAN FASTCALL ndisQueueOpenOnProtocol( IN PNDIS_OPEN_BLOCK Open, IN PNDIS_PROTOCOL_BLOCK Protocol ); VOID NdisCancelTimer( IN PNDIS_TIMER Timer, OUT PBOOLEAN TimerCancelled ); // // 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 ); #undef NdisMSendResourcesAvailable VOID NdisMSendResourcesAvailable( IN NDIS_HANDLE MiniportAdapterHandle ); #undef NdisMResetComplete VOID NdisMResetComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status, IN BOOLEAN AddressingReset ); NTSTATUS ndisSaveParameters( IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext ); NTSTATUS ndisReadParameter( IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext ); VOID FASTCALL ndisMCommonHaltMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisMHaltMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisMUnload( IN PDRIVER_OBJECT DriverObject ); NDIS_STATUS FASTCALL ndisQueryDeviceOid( IN PNDIS_USER_OPEN_CONTEXT OpenContext, IN PNDIS_REQUEST QueryRequest, IN NDIS_OID Oid, IN PVOID Buffer, IN UINT BufferLength ); BOOLEAN FASTCALL ndisValidOid( IN PNDIS_USER_OPEN_CONTEXT OpenContext, IN NDIS_OID Oid ); NDIS_STATUS FASTCALL ndisSplitStatisticsOids( IN PNDIS_USER_OPEN_CONTEXT OpenContext, IN PNDIS_OID OidList, IN ULONG NumOids ); VOID FASTCALL ndisMFinishClose( IN PNDIS_OPEN_BLOCK Open ); VOID ndisMQueuedFinishClose( IN PNDIS_OPEN_BLOCK Open ); BOOLEAN FASTCALL ndisMKillOpen( IN PNDIS_OPEN_BLOCK Open ); NDIS_STATUS FASTCALL ndisQueryOidList( IN PNDIS_USER_OPEN_CONTEXT OpenContext ); VOID ndisBugcheckHandler( IN PNDIS_WRAPPER_CONTEXT WrapperContext, IN ULONG Size ); VOID ndisMFinishQueuedPendingOpen( IN PNDIS_POST_OPEN_PROCESSING PostOpen ); VOID NdisAllocatePacketPool( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, IN UINT NumberOfDescriptors, IN UINT ProtocolReservedLength ); #undef NdisIMInitializeDeviceInstance NDIS_STATUS NdisIMInitializeDeviceInstance( IN NDIS_HANDLE DriverHandle, IN PNDIS_STRING DriverInstance ); #undef NdisSend VOID NdisSend( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); #undef NdisSendPackets VOID NdisSendPackets( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); 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 ); VOID FASTCALL ndisMAllocSGList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet ); VOID FASTCALL ndisMFreeSGList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet ); VOID ndisMProcessSGList( IN PDEVICE_OBJECT pDO, IN PIRP pIrp, IN PSCATTER_GATHER_LIST pSGL, IN PVOID Context ); VOID ndisWorkItemHandler( IN PNDIS_WORK_ITEM WorkItem ); // // MISC // #undef NDIS_BUFFER_TO_SPAN_PAGES ULONG NDIS_BUFFER_TO_SPAN_PAGES( IN PNDIS_BUFFER Buffer ); #undef NdisGetFirstBufferFromPacket VOID NdisGetFirstBufferFromPacket( IN PNDIS_PACKET Packet, OUT PNDIS_BUFFER * FirstBuffer, OUT PVOID * FirstBufferVA, OUT PUINT FirstBufferLength, OUT PUINT TotalBufferLength ); #undef NdisGetFirstBufferFromPacketSafe VOID NdisGetFirstBufferFromPacketSafe( IN PNDIS_PACKET Packet, OUT PNDIS_BUFFER * FirstBuffer, OUT PVOID * FirstBufferVA, OUT PUINT FirstBufferLength, OUT PUINT TotalBufferLength, IN MM_PAGE_PRIORITY Priority ); #undef NdisBufferLength ULONG NdisBufferLength( IN PNDIS_BUFFER Buffer ); #undef NdisBufferVirtualAddress PVOID NdisBufferVirtualAddress( IN PNDIS_BUFFER Buffer ); #undef NdisGetBufferPhysicalArraySize VOID NdisGetBufferPhysicalArraySize( IN PNDIS_BUFFER Buffer, OUT PUINT ArraySize ); #undef NdisAllocateSpinLock VOID NdisAllocateSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisFreeSpinLock VOID NdisFreeSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisAcquireSpinLock VOID NdisAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisReleaseSpinLock VOID NdisReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisDprAcquireSpinLock VOID NdisDprAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisDprReleaseSpinLock VOID NdisDprReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock ); #undef NdisGetCurrentSystemTime VOID NdisGetCurrentSystemTime( IN PLARGE_INTEGER pCurrentTime ); #undef NdisQueryBufferSafe VOID NdisQueryBufferSafe( IN PNDIS_BUFFER Buffer, OUT PVOID * VirtualAddress OPTIONAL, OUT PUINT Length, IN MM_PAGE_PRIORITY Priority ); #undef NdisQueryBufferOffset VOID NdisQueryBufferOffset( IN PNDIS_BUFFER Buffer, OUT PUINT Offset, OUT PUINT Length ); #undef NdisAdjustBufferLength VOID NdisAdjustBufferLength( IN PNDIS_BUFFER Buffer, IN UINT Length ); #undef NdisUpdateSharedMemory VOID NdisUpdateSharedMemory( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Length, IN PVOID VirtualAddress, IN NDIS_PHYSICAL_ADDRESS PhysicalAddress ); #undef NdisFreePacketPool VOID NdisFreePacketPool( IN NDIS_HANDLE PoolHandle ); #undef NdisFreePacket VOID NdisFreePacket( IN PNDIS_PACKET Packet ); #undef NdisDprFreePacketNonInterlocked VOID NdisDprFreePacketNonInterlocked( IN PNDIS_PACKET Packet ); #undef NdisDprFreePacket VOID NdisDprFreePacket( IN PNDIS_PACKET Packet ); VOID FASTCALL ndisFreePacket( IN PNDIS_PACKET Packet, IN PNDIS_PKT_POOL Pool ); #undef NdisAnsiStringToUnicodeString NDIS_STATUS NdisAnsiStringToUnicodeString( IN OUT PUNICODE_STRING DestinationString, IN PANSI_STRING SourceString ); #undef NdisUnicodeStringToAnsiString NDIS_STATUS NdisUnicodeStringToAnsiString( IN OUT PANSI_STRING DestinationString, IN PUNICODE_STRING SourceString ); #undef NdisCompareAnsiString BOOLEAN NdisCompareAnsiString( IN PANSI_STRING String1, IN PANSI_STRING String2, IN BOOLEAN CaseInSensitive ); #undef NdisCompareUnicodeString BOOLEAN NdisCompareUnicodeString( IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive ); #undef NdisUpcaseUnicodeString NDIS_STATUS NdisUpcaseUnicodeString( OUT PUNICODE_STRING DestinationString, IN PUNICODE_STRING SourceString ); #undef NdisReset VOID NdisReset( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle ); #undef NdisRequest VOID NdisRequest( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_REQUEST NdisRequest ); #undef NdisTransferData VOID NdisTransferData( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred ); BOOLEAN ndisVerifierInitialization( VOID ); BOOLEAN ndisVerifierInjectResourceFailure ( IN BOOLEAN fDelayFailure ); EXPORT NDIS_STATUS ndisVerifierAllocateMemory( OUT PVOID * VirtualAddress, IN UINT Length, IN UINT MemoryFlags, IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress ); EXPORT NDIS_STATUS ndisVerifierAllocateMemoryWithTag( OUT PVOID * VirtualAddress, IN UINT Length, IN ULONG Tag ); EXPORT VOID ndisVerifierAllocatePacketPool( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, IN UINT NumberOfDescriptors, IN UINT ProtocolReservedLength ); EXPORT VOID ndisVerifierAllocatePacketPoolEx( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, IN UINT NumberOfDescriptors, IN UINT NumberOfOverflowDescriptors, IN UINT ProtocolReservedLength ); EXPORT VOID ndisVerifierFreePacketPool( IN NDIS_HANDLE PoolHandle ); NDIS_STATUS ndisVerifierQueryMapRegisterCount( IN NDIS_INTERFACE_TYPE BusType, OUT PUINT MapRegisterCount ); VOID ndisFreePacketPool( IN NDIS_HANDLE PoolHandle, IN BOOLEAN Verify ); #if TRACK_MEMORY extern PVOID AllocateM( IN UINT Size, IN ULONG ModLine, IN ULONG Tag ); extern VOID FreeM( IN PVOID MemPtr ); #endif VOID ndisMNotifyMachineName( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_STRING MachineName OPTIONAL ); VOID ndisPowerStateCallback( IN PVOID CallBackContext, IN PVOID Argument1, IN PVOID Argument2 ); VOID ndisNotifyMiniports( IN PNDIS_MINIPORT_BLOCK Miniport OPTIONAL, IN NDIS_DEVICE_PNP_EVENT DevicePnPEvent, IN PVOID Buffer, IN ULONG Length ); PNDIS_MINIPORT_BLOCK ndisReferenceNextUnprocessedMiniport( IN PNDIS_M_DRIVER_BLOCK MiniBlock ); VOID ndisUnprocessAllMiniports( IN PNDIS_M_DRIVER_BLOCK MiniBlock ); #undef NdisSetPacketCancelId VOID NdisSetPacketCancelId( IN PNDIS_PACKET Packet, IN PVOID CancelId ); #undef NdisGetPacketCancelId PVOID NdisGetPacketCancelId( IN PNDIS_PACKET Packet ); VOID ndisSetupWmiNode( IN PNDIS_MINIPORT_BLOCK Miniport, IN PUNICODE_STRING InstanceName, IN ULONG DataBlockSize, IN PVOID pGuid, IN OUT PWNODE_SINGLE_INSTANCE * pwnode ); BOOLEAN FASTCALL ndisMStartSendPacketsSG( IN PNDIS_MINIPORT_BLOCK Miniport ); NDIS_STATUS ndisMSendSG( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); BOOLEAN FASTCALL ndisMStartSendsSG( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisMSendPacketsSG( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); VOID ndisMSendCompleteSG( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status ); VOID FASTCALL ndisMAllocSGListS( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet ); VOID ndisMProcessSGListS( IN PDEVICE_OBJECT pDO, IN PIRP pIrp, IN PSCATTER_GATHER_LIST pSGL, IN PVOID Context ); VOID ndisDereferenceDmaAdapter( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisDereferenceAfNotification( IN PNDIS_OPEN_BLOCK Open ); VOID ndisMSetIndicatePacketHandler( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisVerifierFreeMemory( IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags ); VOID ndisUpdateCheckForLoopbackFlag( IN PNDIS_MINIPORT_BLOCK Miniport ); BOOLEAN ndisReferenceOpenByHandle( IN PNDIS_OPEN_BLOCK Open, IN BOOLEAN fRef ); BOOLEAN ndisRemoveOpenFromGlobalList( IN PNDIS_OPEN_BLOCK Open ); NDIS_STATUS ndisMRegisterInterruptCommon( OUT PNDIS_MINIPORT_INTERRUPT Interrupt, IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InterruptVector, IN UINT InterruptLevel, IN BOOLEAN RequestIsr, IN BOOLEAN SharedInterrupt, IN NDIS_INTERRUPT_MODE InterruptMode ); VOID ndisMDeregisterInterruptCommon( IN PNDIS_MINIPORT_INTERRUPT MiniportInterrupt ); NTSTATUS CreateDeviceDriverSecurityDescriptor( PVOID DeviceOrDriverObject );