FsRtlPostStackOverflow 函数 (ntifs.h)
FsRtlPostStackOverflow 例程将堆栈溢出项发布到堆栈溢出线程。
语法
void FsRtlPostStackOverflow(
[in] PVOID Context,
[in] PKEVENT Event,
[in] PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
);
参数
[in] Context
要传递给堆栈溢出回调例程的上下文指针。
[in] Event
指向要传递到堆栈溢出回调例程的调用方分配的通知事件的指针。 必须通过调用 KeInitializeEvent 初始化为非签名。
[in] StackOverflowRoutine
指向在处理溢出线程中的请求时要调用的回调例程的指针。
返回值
无
备注
当 IoGetRemainingStackSize 返回的剩余堆栈空间量低于文件系统的堆栈溢出阈值时,文件系统通常在文件 I/O 操作期间调用 FsRtlPostStackOverflow。 FsRtlPostStackOverflow 将 I/O 请求发布到特殊堆栈溢出工作队列。 完成 I/O 操作后,调用方 的事件 将设置为信号状态。
文件系统筛选器驱动程序应使用 IoQueueWorkItem 而不是 FsRtlPostStackOverflow,因为 IoQueueWorkItem 可确保与指定工作项关联的设备对象可用于处理工作项。
如果池分配失败, FsRtlPostStackOverflow 将引发STATUS_INSUFFICIENT_RESOURCES异常。 若要在发生此池分配失败时获得控制,驱动程序应在 try-except 或 try-finally 语句中包装对 FsRtlPostStackOverflow 的调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 |
目标平台 | 通用 |
标头 | ntifs.h (包括 FltKernel.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |