NdisMFreeSharedMemory 函数 (ndis.h)

NdisMFreeSharedMemory 释放以前由 NdisMAllocateSharedMemory 或 分配的内存 NdisMAllocateSharedMemoryAsyncEx 由 DMA NIC 的驱动程序。

语法

void NdisMFreeSharedMemory(
  [in] NDIS_HANDLE           MiniportAdapterHandle,
  [in] ULONG                 Length,
  [in] BOOLEAN               Cached,
  [in] PVOID                 VirtualAddress,
  [in] NDIS_PHYSICAL_ADDRESS PhysicalAddress
);

参数

[in] MiniportAdapterHandle

指定最初输入到 MiniportInitializeEx 的句柄。

[in] Length

指定最初分配的字节数。

[in] Cached

如果原始分配可缓存,则指定 TRUE

[in] VirtualAddress

指定 由 NdisMAllocateSharedMemoryNdisMAllocateSharedMemoryAsyncEx 返回的基虚拟地址。

[in] PhysicalAddress

指定 由 NdisMAllocateSharedMemoryNdisMAllocateSharedMemoryAsyncEx 返回的相应物理地址。

返回值

备注

如果已成功调用 NdisMAllocateSharedMemory NdisMAllocateSharedMemoryAsyncEx,DMA 设备的微型端口驱动程序调用 NdisMFreeSharedMemory (如果发生以下任一情况):

  • MiniportInitializeEx 函数无法初始化 NIC,因此此函数必须释放该 NIC 的硬件资源上的所有现有声明,然后才能返回控制权。
  • 正在删除微型端口驱动程序为其分配内存的 NIC。
  • 正在卸载驱动程序,无论是因为系统正在关闭,还是因为用户重新配置了计算机中使用的网络组件。
  • 当 NIC 上的 I/O 需求较高,但网络流量现已消退到平均水平时,驱动程序使用 NdisMAllocateSharedMemoryAsyncEx 分配了额外的共享内存。
微型端口驱动程序无法调用 NdisMFreeSharedMemory 来释放分配的共享内存范围内的子范围。 传递给 NdisMFreeSharedMemory 的参数必须与传递给 NdisMAllocateSharedMemoryNdisMAllocateSharedMemoryAsyncEx 的参数完全匹配。

无法从 MiniportShutdownEx 函数调用 NdisMFreeSharedMemory

Microsoft Windows Server 2003、Windows XP Service Pack 1 及更高版本的 Windows 允许总线主 DMA NIC 和从属 DMA NIC 调用 NdisMFreeSharedMemory。 以前的版本仅允许总线主 DMA NIC 调用 NdisMFreeSharedMemory

要求

要求
最低受支持的客户端 NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 NdisMFreeSharedMemory (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisMFreeSharedMemory (NDIS 5.1) ) 。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_Miniport_Driver_Function (ndis) NdisMFreeSharedMemory (ndis)

另请参阅

MiniportHaltEx

MiniportInitializeEx

MiniportSharedMemoryAllocateComplete

MiniportShutdownEx

NdisMAllocateSharedMemory

NdisMAllocateSharedMemoryAsyncEx