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。

返回值

如果堆栈分配成功且调用标注,则返回成功。 否则,返回失败状态。

言论

KeExpandKernelStackAndCalloutSize 字节扩展内核堆栈,ExpandStackCall 例程使用。 如果堆栈上没有足够的空间,KeExpandKernelStackAndCallout 分配新的内核堆栈段。 然后,该例程调用 ExpandedStackCall 例程。

在 Windows 7、Windows Server 2008 R2 和更高版本的 Windows 中,请考虑使用 KeExpandKernelStackAndCalloutEx 例程,而不是 KeExpandKernelStackAndCalloutKeExpandKernelStackAndCalloutEx 类似于 KeExpandKernelStackAndCallout,但具有其他参数,可在 IRQL <= DISPATCH_LEVEL调用。

在线程的 ExpandedStackCall 例程返回之前,调用线程不得调用 PsTerminateSystemThread 例程。 PsTerminateSystemThread 检查以确定 ExpandedStackCall 例程是否仍然处于活动状态,如果是,则会导致 bug 检查。

要求

要求 价值
最低支持的客户端 从基于 x64 的处理器上的 Windows Server 2003 开始,从所有处理器上的 Windows Vista 开始可用。
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

ExpandedStackCall

KeExpandKernelStackAndCalloutEx

PsTerminateSystemThread