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

另请参阅

进程和线程函数

线程堆栈大小

线程

VBS enclave 中可用的 Vertdll API