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 例程,而不是 KeExpandKernelStackAndCalloutKeExpandKernelStackAndCalloutEx 类似于 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

另请参阅

ExpandedStackCall

KeExpandKernelStackAndCalloutEx

PsTerminateSystemThread