IMiniportWavePciStream::RevokeMappings メソッド (portcls.h)
RevokeMappings
メソッドは、IPortWavePciStream::GetMappingによって取得されたマッピングを取り消します。
構文
NTSTATUS RevokeMappings(
[in] PVOID FirstTag,
[in] PVOID LastTag,
[out] PULONG MappingsRevoked
);
パラメーター
[in] FirstTag
取り消される最初のマッピングを識別するタグ値を指定します。
[in] LastTag
取り消される最後のマッピングを識別するタグ値を指定します。
[out] MappingsRevoked
取り消されたマッピングの数の出力ポインター。 このパラメーターは、メソッドが呼び出しによって実際に取り消されたマッピングの数を書き込む ULONG 変数を指します。 この数値は、ミニポート ドライバーが既に解放 LastTag FirstTag 範囲内のすべてのマッピングを除外します。 同期の問題により、ポート ドライバーが取り消すマッピングの一覧を決定してから、RevokeMappings
の呼び出しまでの間に、範囲内のマッピングの一部が解放される可能性があります。 詳細については、次の「解説」セクションを参照してください。
戻り値
RevokeMappings
は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは適切なエラー コードを返します。
備考
ポート ドライバーは、次の場合に RevokeMappings
を呼び出してストリームのマッピングを取り消します。
- I/O 要求 (IRP) が取り消され、以前にマップされたメモリが使用できなくなる可能性があります。
- ストリームの状態がKSSTATE_STOPに変わり (KSSTATEを参照)、デバイスでマッピングが不要になります。
RevokeMapping
メソッドは、FirstTag で識別されるマッピングで始まり、最後のタグ で識別されるマッピングで終わるシーケンス内のすべてのマッピング取り消します。 これには、FirstTag と LastTag とその間のすべてのマッピング で識別されるマッピングが含まれます。 ミニポート ドライバーは、使用可能なマッピングの一覧から削除することによって、各マッピングを取り消します。
RevokeMapping
メソッドを使用すると、FirstTag 設定し、LastTag を同じ値に することで、単一のマッピングを削除できます。
ポート ドライバーは、DMA コントローラーの散布図/収集転送キューに対するミニポート ドライバーのメンテナンス操作に関して、RevokeMappings
を非同期的に呼び出すことができます。 このキューへのアクセスは、同期プリミティブによって保護されている必要があります。 たとえば、Microsoft Windows Driver Kit (WDK) の ac97 サンプル オーディオ ドライバーでは、KeAcquireSpinLock と KeReleaseSpinLock 呼び出しを 重要なコード セクションを囲むことでこれを行います。 ミニポート ドライバーは、RevokeMappings
へのポート ドライバーの呼び出しに関して非同期的にマッピングを解放できるため、ミニポート ドライバーが以前にリリースされている可能性があります (IPortWavePciStream::ReleaseMappingを参照) RevokeMappings
呼び出しで指定されたマッピングの 1 つ以上。
マッピングの詳細については、「WavePci Latency」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | portcls.h (Portcls.h を含む) |
IRQL | DISPATCH_LEVEL |
関連項目
IMiniportWavePciStream の
IPortWavePciStream::GetMapping