ExInterlockedAddLargeInteger 関数 (wdm.h)

ExInterlockedAddLargeInteger ルーチンは、指定した変数に大きな整数値をアトミック操作として追加します。

構文

LARGE_INTEGER ExInterlockedAddLargeInteger(
  [in, out] PLARGE_INTEGER Addend,
  [in]      LARGE_INTEGER  Increment,
  [in, out] PKSPIN_LOCK    Lock
);

パラメーター

[in, out] Addend

Increment 値によって調整される変数へのポインター。

[in] Increment

Addend に追加する値を指定します。

[in, out] Lock

Addend へのアクセスを同期するために使用するスピン ロックへのポインター。

戻り値

ExInterlockedAddLargeIntegerAddend パラメーターの初期値を返します。

注釈

インターロック操作を実行するサポート ルーチンは、ページ フォールトの原因と見なされます。 つまり、コードも、ユーザーが触れるデータも、システムをダウンさせずにページ フォールトを引き起こす可能性はありません。 スピン ロックを使用して、対称マルチプロセッサ マシンで原子性を実現します。 呼び出し元は、ExInterlockedXxx の最初の呼び出しの前に KeInitializeSpinLock で初期化する必要がある Lock の常駐ストレージを提供する必要があります。

ExInterlockedAddLargeInteger に渡されるロックは、同じスピン ロックと同期する同じ値に対する他の操作に対して、Addend の追加操作がアトミックであることを保証するために使用されます。

ExInterlockedAddLargeInteger は割り込みをマスクします。 そのため、IRQL = DISPATCH_LEVEL で実行されるルーチンの呼び出しで同じ ロック が再利用されない場合は、ISR と他のデバイス ドライバー コード間の同期に使用できます。

InterlockedXxx の呼び出しは、呼び出し元が指定したスピン ロックを使用しない他の InterlockedXxx 呼び出しに対してアトミックであることが保証されることに注意してください。

ExInterlockedAddLargeInteger の呼び出し元は、任意の IRQL で実行されます。 Addend パラメーターのストレージは、すべての IRQL に常駐している必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows で使用できます。 Windows 98 または Windows Me では使用できません。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

こちらもご覧ください

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock