SetThreadStackGuarantee 函数 (processthreadsapi.h)
设置与调用线程或光纤关联的堆栈的最小大小,该线程或光纤将在任何堆栈溢出异常期间可用。 这对于处理堆栈溢出异常很有用;应用程序可以在异常处理期间安全地使用指定数量的字节。
语法
BOOL SetThreadStackGuarantee(
[in, out] PULONG StackSizeInBytes
);
参数
[in, out] StackSizeInBytes
堆栈的大小(以字节为单位)。 返回时,此值设置为上一个堆栈的大小(以字节为单位)。
如果此参数为 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.h、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
DLL | Kernel32.dll |