次の方法で共有


ExReleaseResourceForThreadLite 関数 (wdm.h)

ExReleaseResourceForThreadLite ルーチンは、指定されたスレッドの入力リソースを解放します。

構文

void ExReleaseResourceForThreadLite(
  [in, out] PERESOURCE       Resource,
  [in]      ERESOURCE_THREAD ResourceThreadId
);

パラメーター

[in, out] Resource

解放するリソースへのポインター。

[in] ResourceThreadId

最初にリソースを取得したスレッドを識別します。 これが現在実行中のスレッドでない場合は、最初にリソースを取得したスレッドで ExSetResourceOwnerPointerEx ルーチンを呼び出すことによって、呼び出し元がリソースの所有権を転送している必要があります。

戻り値

なし

解説

これが現在実行中のスレッドでない場合は、最初にリソースを取得したスレッドで ExSetResourceOwnerPointerEx ルーチンを呼び出すことによって、呼び出し元がリソースの所有権を転送している必要があります。 これは、スレッド B がリソースを解放する前に、スレッド A が終了または削除されないようにするためです。

呼び出し元がシステム スレッドで実行されていない限り、呼び出し元は、このルーチンを呼び出す前に、通常のカーネル APC の配信を明示的に無効にする必要があります。 この要件により、リソースを操作または保持している間にスレッドが中断されるのを防ぐことができます。 呼び出し元は、 KeEnterCriticalRegion ルーチンを呼び出すことによって、通常のカーネル APC 配信を無効にすることができます。 リソースが解放されるまで、配信は無効のままにしておく必要があります。その時点で、 KeLeaveCriticalRegion ルーチンを呼び出すことで再び有効にすることができます。 詳細については、「 APC の無効化」を参照してください。

この要件は、システム スレッドから ExReleaseResourceForThreadLite に対して行われた呼び出しには適用されません。 システム スレッドで実行されている呼び出し元は、このルーチンを呼び出す前に明示的に APC を無効にする必要はありません。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 ExclusiveResourceAccess(wdm)HwStorPortProhibitedDDIs(storport)WithinCriticalRegion(storport)、WithinCriticalRegion(storport)、 WithinCriticalRegion(wdm)

こちらもご覧ください

ExAcquireResourceExclusiveLite

ExAcquireResourceSharedLite

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExGetCurrentResourceThread

ExInitializeResourceLite

ExReinitializeResourceLite