FSCTL_SUSPEND_OVERLAY控制代码暂停附加到卷的后盾源,从而阻止对支持源的访问并允许修改或删除该源。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile。
BOOL
WINAPI
DeviceIoControl( (HANDLE) hDevice, // handle to device
(DWORD) FSCTL_SUSPEND_OVERLAY, // dwIoControlCode
(LPDWORD) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
(LPDWORD) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure
参数
实例 [in]: 仅 FltFsControlFile 。 调用方不透明的实例指针。 此参数是必需的,不能为 NULL。
FileObject [in]: FltFsControlFile 。 要为其更新覆盖的卷的文件指针对象。 此参数是必需的,不能为 NULL。
FileHandle [in]: ZwFsControlFile 。 要为其更新覆盖的卷的句柄。 此参数是必需的,不能为 NULL。
FsControlCode [in]:作的控件代码。 对此作使用 FSCTL_SUSPEND_OVERLAY 。
InputBuffer [in]:指向输入缓冲区的指针,该缓冲区必须包含 WOF_EXTERNAL_INFO 结构。 如果需要, WOF_EXTERNAL_INFO后立即包含其他提供程序特定的数据。 如果提供程序是 WIM 文件,则WOF_EXTERNAL_INFO后将包含WIM_PROVIDER_SUSPEND_OVERLAY_INPUT结构。
InputBufferLength [in]:设置为 sizeof(WOF_EXTERNAL_INFO)加上任何其他提供程序输入数据的大小。
OutputBuffer [out]: 未使用。 设置为 NULL。
OutputBufferLength [in]:设置为 0。
状态块
如果作成功,FltFsControlFile 或 ZwFsControlFile 将返回STATUS_SUCCESS。 否则,相应的函数可能会返回以下 NTSTATUS 值之一。
| Code | 含义 |
|---|---|
| 访问被拒绝 | 请求者没有管理权限。 |
| STATUS_BUFFER_TOO_SMALL | InputBuffer 指向的输入缓冲区的长度(由 InputBufferLength 指定)太小。 |
| 内部错误状态 | 请求的卷不可访问。 |
| STATUS_INVALID_DEVICE_REQUEST | 支持服务不存在或未启动。 |
注解
当要删除的后退源是 Windows 映像格式(WIM)文件时,输入缓冲区将包含 WOF_EXTERNAL_INFO 结构,后跟 WIM_PROVIDER_SUSPEND_OVERLAY_INPUT 结构。 在本例中 ,InputBufferLength 将为 sizeof(WOF_EXTERNAL_INFO) + sizeof(WIM_PROVIDER_REMOVE_OVERLAY_INPUT)。 WIM_PROVIDER_SUSPEND_OVERLAY_INPUT中的 DataSourceId 值必须为以前在FSCTL_ADD_OVERLAY请求中添加的 WIM 文件。
其他后盾提供程序将定义其自己的特定输入参数结构。
要求
| 要求类型 | 要求 |
|---|---|
| 标题 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |