MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程

RDBSS 调用 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程,向网络微型重定向程序发出目录更改通知操作的请求。

语法

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

参数

RxContext [in, out]
指向RX_CONTEXT结构的指针。 此参数包含请求操作的 IRP。

返回值

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 返回成功时STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:

返回代码 说明
STATUS_FILE_CLOSED

FCB 结构已收购,但关联的SRV_OPEN结构已关闭。

STATUS_INSUFFICIENT_RESOURCES

资源不足,无法完成请求。

STATUS_INVALID_DEVICE_REQUEST

指定的设备请求无效。

STATUS_INVALID_PARAMETER

在 RxContext 中指定了无效的参数。

STATUS_NOT_IMPLEMENTED

此例程未实现。

STATUS_NOT_SUPPORTED

网络微型重定向程序不支持指定的请求。

注解

RDBSS 调用 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 以响应接收 IRP_MJ_DIRECTORY_CONTROL 请求。

在调用 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]之前,RDBSS 修改 RxContext 参数指向的 RX_CONTEXT 结构中的以下成员:

LowIoContext.Operation 成员设置为 LOWIO_OP_NOTIFY_CHANGE_DIRECTORY。

LowIoContext.ResourceThreadId 成员设置为在 RDBSS 中启动操作的进程线程。

如果 IrpSp-Flags 设置了 SL_WATCH_TREE 位,则 LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree> 成员设置为 TRUE

LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter 成员设置为 IrpSp-Parameters.NotifyDirectory.CompletionFilter> 的值。

LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength 成员设置为 IrpSp-Parameters.NotifyDirectory.Length> 的值。

LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer 成员设置为通过调用 MmGetSystemAddressForMdlSafe 传入 Irp-MdlAddress> 和 NormalPagePriority 返回的值。 还会探测并锁定用户缓冲区,以便进行写入访问。

目录更改通知操作通常由网络微型重定向程序作为异步操作实现,因为它可能需要相当长的时间。 该操作通常包括将网络请求发送到请求更改通知的远程服务器。 当所需的更改在服务器上受到影响时,将获取响应。 这是一个操作示例,网络微型重定向程序可能需要注册唯一的上下文值来处理本地启动的取消。

在处理 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程时,RX_CONTEXT的 LowIoContext.ResourceThreadId 成员保证指示在 RDBSS 中启动操作的进程线程。 LowIoContext.ResourceThreadId 成员可用于代表另一个线程释放 FCB 结构。 异步例程完成后,可以释放从初始线程获取的 FCB 结构。 可以通过调用 RxReleaseFcbResourceForThreadInMRx 来释放 FCB 结构。

要求

目标平台

桌面

标头

Mrx.h (包括 Mrx.h)

另请参阅

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_FSCTL]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx