SetThreadStackGuarantee 関数 (processthreadsapi.h)
呼び出し元のスレッドまたはファイバーに関連付けられているスタックの最小サイズを設定します。このサイズは、スタック オーバーフローの例外時に使用できます。 これは、スタック オーバーフロー例外を処理する場合に便利です。アプリケーションでは、例外処理中に指定されたバイト数を安全に使用できます。
構文
BOOL SetThreadStackGuarantee(
[in, out] PULONG StackSizeInBytes
);
パラメーター
[in, out] StackSizeInBytes
スタックのサイズ (バイト単位)。 戻り値の場合、この値は前のスタックのサイズ (バイト単位) に設定されます。
このパラメーターが 0 (ゼロ) の場合、関数は成功し、パラメーターには現在のスタックのサイズが含まれます。
指定したサイズが現在のサイズより小さい場合、関数は成功しますが、この要求は無視されます。 そのため、この関数を使用してスタックのサイズを小さくすることはできません。
この値は、予約済みスタック サイズより大きくすることはできません。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
関数が成功した場合、アプリケーションは 構造化例外処理を使用して、可能なEXCEPTION_STACK_OVERFLOW例外を処理できます。 スタック オーバーフローの処理後に実行を再開するには、特定の回復手順を実行する必要があります。 Microsoft C/C++ コンパイラを使用している場合は、 _resetstkoflw 関数を呼び出します。 別のコンパイラを使用している場合は、スタック オーバーフローからの復旧に関する情報については、コンパイラのドキュメントを参照してください。
ファイバーのスタック保証を設定するには、まず SwitchToFiber 関数を呼び出してファイバーを実行する必要があります。 このファイバの保証を設定した後、どのスレッドがファイバを実行してもファイバによって使用されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista、Windows XP Professional x64 Edition [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008、Windows Server 2003 SP1 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |