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
指向在溢出线程中处理请求时要调用的回调例程的指针。
返回值
没有
言论
文件系统通常在文件 I/O 操作期间调用 FsRtlPostStackOverflow,而 ioGetRemainingStackSize 返回的剩余堆栈空间量低于文件系统的堆栈溢出阈值。 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) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |