diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/ndis/ndis30/minisub.c | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/ntos/ndis/ndis30/minisub.c')
-rw-r--r-- | private/ntos/ndis/ndis30/minisub.c | 280 |
1 files changed, 280 insertions, 0 deletions
diff --git a/private/ntos/ndis/ndis30/minisub.c b/private/ntos/ndis/ndis30/minisub.c new file mode 100644 index 000000000..4454cd129 --- /dev/null +++ b/private/ntos/ndis/ndis30/minisub.c @@ -0,0 +1,280 @@ +/*++ +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 + ); +} + |