次の方法で共有


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

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

構文

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

パラメーター

[in] Tag

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

戻り値

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

備考

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

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

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

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー portcls.h (Portcls.h を含む)
IRQL <=DISPATCH_LEVEL

関連項目

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock