次の方法で共有


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を参照)、デバイスでマッピングが不要になります。
ミニポート ドライバーは、IPortWavePciStream::GetMapping への呼び出しからそのマッピングを取得する順序追跡します。 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

IPortWavePciStream::ReleaseMapping

KSSTATE

KeAcquireSpinLock

KeReleaseSpinLock