次の方法で共有


ExInterlockedAddLargeInteger 関数 (wdm.h)

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

構文

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

パラメーター

[in, out] Addend

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

[in] Increment

addend に追加する値指定します。

[in, out] Lock

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

戻り値

ExInterlockedAddLargeInteger は、Addend パラメーターの初期値を返します。

備考

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

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

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降のバージョンの Windows で使用できます。 Windows 98 または Windows Me では使用できません。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

関連項目

ExInterlockedAddUlong する

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock