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