|
|
/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
miniport.c
Abstract:
NDIS wrapper functions
Author:
Sean Selitrennikoff (SeanSe) 05-Oct-93
Environment:
Kernel mode, FSD
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
#undef NdisAllocateSpinLock
#undef NdisFreeSpinLock
#undef NdisAcquireSpinLock
#undef NdisReleaseSpinLock
#undef NdisDprAcquireSpinLock
#undef NdisDprReleaseSpinLock
#undef NdisFreeBuffer
#undef NdisQueryBuffer
#undef NdisQueryBufferOffset
#undef NDIS_BUFFER_TO_SPAN_PAGES
#undef NdisGetBufferPhysicalArraySize
#undef NdisEqualString
#undef NdisMStartBufferPhysicalMapping
#undef NdisMCompleteBufferPhysicalMapping
VOID NdisAllocateSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisFreeSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisDprAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisDprReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock );
VOID NdisFreeBuffer( IN PNDIS_BUFFER Buffer );
VOID NdisQueryBuffer( IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, OUT PUINT Length );
VOID NdisQueryBufferOffset( IN PNDIS_BUFFER Buffer, OUT PUINT Offset, OUT PUINT Length );
ULONG NDIS_BUFFER_TO_SPAN_PAGES( IN PNDIS_BUFFER Buffer );
VOID NdisGetBufferPhysicalArraySize( IN PNDIS_BUFFER Buffer, OUT PUINT ArraySize );
BOOLEAN NdisEqualString( IN PNDIS_STRING String1, IN PNDIS_STRING String2, IN BOOLEAN CaseInsensitive );
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 NdisAllocateSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { KeInitializeSpinLock(&SpinLock->SpinLock); }
VOID NdisFreeSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { UNREFERENCED_PARAMETER (SpinLock); }
VOID NdisAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { KeAcquireSpinLock(&SpinLock->SpinLock, &SpinLock->OldIrql); }
VOID NdisReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { KeReleaseSpinLock(&SpinLock->SpinLock, SpinLock->OldIrql); }
VOID NdisDprAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { KeAcquireSpinLockAtDpcLevel(&SpinLock->SpinLock); SpinLock->OldIrql = DISPATCH_LEVEL; }
VOID NdisDprReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock ) { KeReleaseSpinLockFromDpcLevel(&SpinLock->SpinLock); } VOID NdisFreeBuffer( IN PNDIS_BUFFER Buffer ) { IoFreeMdl(Buffer); }
VOID NdisQueryBuffer( IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, OUT PUINT Length ) { if ( ARGUMENT_PRESENT(VirtualAddress) ) { *VirtualAddress = MmGetSystemAddressForMdl(Buffer); } *Length = MmGetMdlByteCount(Buffer); }
VOID NdisQueryBufferOffset( IN PNDIS_BUFFER Buffer, OUT PUINT Offset, OUT PUINT Length ) { *Offset = MmGetMdlByteOffset(Buffer); *Length = MmGetMdlByteCount(Buffer); }
ULONG NDIS_BUFFER_TO_SPAN_PAGES( IN PNDIS_BUFFER Buffer ) { if (MmGetMdlByteCount(Buffer) == 0) { return 1; } return COMPUTE_PAGES_SPANNED( MmGetMdlVirtualAddress(Buffer), MmGetMdlByteCount(Buffer) ); }
VOID NdisGetBufferPhysicalArraySize( IN PNDIS_BUFFER Buffer, OUT PUINT ArraySize ) { if (MmGetMdlByteCount(Buffer) == 0) { *ArraySize = 1; } else { *ArraySize = COMPUTE_PAGES_SPANNED( MmGetMdlVirtualAddress(Buffer), MmGetMdlByteCount(Buffer) ); } }
BOOLEAN NdisEqualString( IN PNDIS_STRING String1, IN PNDIS_STRING String2, IN BOOLEAN CaseInsensitive ) { return RtlEqualUnicodeString(String1, String2, CaseInsensitive); }
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 ) { NdisMStartBufferPhysicalMappingMacro( MiniportAdapterHandle, Buffer, PhysicalMapRegister, WriteToDevice, PhysicalAddressArray, ArraySize ); }
VOID NdisMCompleteBufferPhysicalMapping( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_BUFFER Buffer, IN ULONG PhysicalMapRegister ) { NdisMCompleteBufferPhysicalMappingMacro( MiniportAdapterHandle, Buffer, PhysicalMapRegister ); }
|