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 で識別されるマッピングで始まり、 LastTag で識別されるマッピングで終わるシーケンス内のすべてのマッピングを取り消します。 これには、 FirstTag と LastTag によって識別されるマッピングと、その間のすべてのマッピングが含まれます。 ミニポート ドライバーは、使用可能なマッピングの一覧から削除することによって、各マッピングを取り消します。
メソッドを RevokeMapping
使用すると、 FirstTag と LastTag を同じ値に設定することで、1 つのマッピングを削除できます。
ポート ドライバーは、DMA コントローラーの散布/収集転送キューでのミニポート ドライバーのメンテナンス操作に関して非同期的にを呼び出 RevokeMappings
すことができます。 このキューへのアクセスは、同期プリミティブによって保護する必要があります。 たとえば、Microsoft Windows Driver Kit (WDK) の ac97 サンプル オーディオ ドライバーでは、 これは KeAcquireSpinLock 呼び出しと KeReleaseSpinLock 呼び出しで重要なコード セクションを囲むことで行われます。 ミニポート ドライバーは へのポート ドライバーの呼び出しに関して非同期的にマッピングを RevokeMappings
解放できるため、ミニポート ドライバーは以前にリリースされている可能性があります ( 「IPortWavePciStream::ReleaseMapping」を参照) 呼び出しで RevokeMappings
指定された 1 つ以上のマッピング。
マッピングの詳細については、「 WavePci 待機時間」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | portcls.h (Portcls.h を含む) |
IRQL | DISPATCH_LEVEL |
こちらもご覧ください
IPortWavePciStream::GetMapping