KeExpandKernelStackAndCallout 函数 (ntddk.h)
KeExpandKernelStackAndCallout 例程调用具有保证堆栈空间量的例程。
语法
NTSTATUS
KeExpandKernelStackAndCallout (
_In_ PEXPAND_STACK_CALLOUT Callout,
_In_opt_ PVOID Parameter,
_In_ SIZE_T Size
);
参数
[in] Callout
指向 ExpandedStackCall 例程的指针。
[in, optional] Parameter
指定要传递给 ExpandedStackCall 例程的参数。
[in] Size
指定要提供给 ExpandedStackCall 例程的堆栈上的字节数。 此值必须足够大,以适应 ExpandedStackCall 例程的堆栈使用情况以及此例程可能进行的任何调用。 此值不得超过 MAXIMUM_EXPANSION_SIZE。
返回值
如果堆栈分配成功且已调用标注,则返回成功。 否则,返回失败状态。
注解
KeExpandKernelStackAndCallout 按 大小 字节扩展内核堆栈,以供 ExpandedStackCall 例程使用。 如果堆栈上没有足够的可用空间, KeExpandKernelStackAndCallout 将分配新的内核堆栈段。 然后,该例程调用 ExpandedStackCall 例程。
在 Windows 7、Windows Server 2008 R2 及更高版本的 Windows 中,请考虑使用 KeExpandKernelStackAndCalloutEx 例程,而不是 KeExpandKernelStackAndCallout。 KeExpandKernelStackAndCalloutEx 类似于 KeExpandKernelStackAndCallout ,但具有其他参数,可在 IRQL <= DISPATCH_LEVEL调用。
在线程的 ExpandedStackCall 例程返回之前,调用线程不得调用 PsTerminateSystemThread 例程。 PsTerminateSystemThread 检查可确定 ExpandedStackCall 例程是否仍处于活动状态,如果仍处于活动状态,则会导致 bug 检查。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从基于 x64 的处理器上的 Windows Server 2003 开始,从所有处理器上的 Windows Vista 开始可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |