次の方法で共有


NdisFreeMemory 関数 (ndis.h)

NdisFreeMemory 関数は、以前に NdisAllocateMemoryWithTagPriority 関数で割り当てられたメモリのブロックを解放します。

構文

void NdisFreeMemory(
  [in] PVOID VirtualAddress,
  [in] UINT  Length,
  [in] UINT  MemoryFlags
);

パラメーター

[in] VirtualAddress

割り当てられたメモリのベース仮想アドレスへのポインター。 このアドレスは NdisAllocateMemoryWithTagPriority 関数によって返されました。

[in] Length

解放するメモリ ブロックのサイズ (バイト単位)。 メモリが NdisAllocateMemoryWithTagPriority で割り当てられたか、MemoryFlags パラメーターが 0 の場合、このパラメーターは無視されます。

[in] MemoryFlags

解放するメモリの種類を指定するフラグのセット。 メモリが NdisAllocateMemoryWithTagPriority で割り当てられた場合、この値は 0 である必要があります。 NDIS 6.0 以降のバージョンでは、 NdisAllocateMemoryWithTagPriority は常にメモリの割り当てに使用されます。

戻り値

なし

解説

キャッシュされていないメモリと連続したメモリは、割り当てられているミニポート ドライバーがアンロードされるまでほとんど解放されないため、 NdisFreeMemory の呼び出し元は通常、これらの種類の割り当て解除に対して IRQL = PASSIVE_LEVELで実行されます。 いずれの場合も、次の手順を実行します。

  • 連続したメモリを解放する場合、 NdisFreeMemory の呼び出し元は IRQL = PASSIVE_LEVELで実行されている必要があります。
  • キャッシュされていないメモリを解放するときは、 NdisFreeMemory の呼び出し元が IRQL < DISPATCH_LEVEL で実行されている必要があります。
  • 連続していないメモリとキャッシュされていないメモリを解放する場合、 NdisFreeMemory の呼び出し元は IRQL <= DISPATCH_LEVELで実行されている必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisFreeMemory (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「NdisFreeMemory (NDIS 5.1)」を参照) でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL 「解説」セクションを参照してください
DDI コンプライアンス規則 Irql_Miscellaneous_Function(ndis)、NdisAllocateMemoryWithTagPriority_Cleanup(ndis)、NdisAllocateMemoryWithTagPriority_InitFail(ndis)、 NdisQueryBindInstanceName(ndis)

こちらもご覧ください

MiniportHaltEx

NdisAllocateMemoryWithTagPriority