次の方法で共有


IPortWavePciStream::ReleaseMapping メソッド (portcls.h)

メソッドは ReleaseMappingIPortWavePciStream::GetMapping の以前の呼び出しによって取得されたマッピングを解放します。

構文

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

パラメーター

[in] Tag

解放するマッピングを識別するタグ値を指定します。 詳細については、「解説」を参照してください。

戻り値

ReleaseMapping は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは適切なエラー コードを返します。

注釈

Tag パラメーターを、最初にマッピングを取得した IPortWavePciStream::GetMapping の呼び出しでマッピングを識別するために使用したのと同じタグ値に設定します。

ミニポート ドライバーは、 IPortWavePciStream::GetMapping への呼び出しからマッピングを取得する順序を追跡し、同じ順序でマッピングを解放する必要があります。

潜在的なデッドロックを回避するには、ミニポート ドライバーが への呼び出し中にスピン ロックを保持しないようにする ReleaseMapping必要があります。 スピン ロックを使用してマルチプロセッサ システムの共有データ構造と周辺機器へのアクセスをシリアル化するコード例については、Microsoft Windows Driver Kit (WDK) の ac97 サンプル オーディオ ドライバーを参照してください。 サンプル コードでは、 を呼び出す前に KeReleaseSpinLock を 呼び出し、 を呼び出 ReleaseMapping した後に KeAcquireSpinLock を 呼び出します ReleaseMapping。 スピン ロックを解放して取得する呼び出しの間に、ドライバー スレッドは、スピン ロックによって保護されているデータまたは周辺機器への排他的アクセス権を持っていると想定することはできません。 ドライバー検証ツール (ドライバー検証ツールの Web サイトでこのツールの説明を参照) は、 へのReleaseMapping呼び出し中にアクティブなスピン ロックを確認します。検出されると、0xC4 (デッドロック検出) バグ チェックが生成されます。

要件

要件
対象プラットフォーム ユニバーサル
Header portcls.h (Portcls.h を含む)
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock