MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] ルーチン
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] ルーチンは、RDBSS によって呼び出され、ディレクトリ変更通知操作のネットワーク ミニ リダイレクターに要求を発行します。
構文
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 は、IRP_MJ_DIRECTORY_CONTROL 要求の受信に応答して MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] を呼び出します。
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 メンバーは、Irp->MdlAddress と NormalPagePriority を渡す MmGetSystemAddressForMdlSafe を呼び出すことによって返される値に設定されます。 ユーザー バッファーもプローブされ、書き込みアクセス用にロックされます。
ディレクトリ変更通知操作は、通常、ネットワーク ミニ リダイレクターによって非同期操作として実装されます。これにはかなりの時間がかかる可能性があるためです。 通常、この操作は、変更通知を要求するリモート サーバーへのネットワーク要求の送信で構成されます。 応答は、サーバーで必要な変更が影響を受けた場合に取得されます。 これは、ローカルで開始されたキャンセルを処理するために、ネットワーク ミニ リダイレクターが一意のコンテキスト値を登録する必要がある操作の例です。
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] ルーチンが処理されている間、RX_CONTEXTの LowIoContext.ResourceThreadId メンバーは、RDBSS で操作を開始したプロセスのスレッドを示していることが保証されます。 LowIoContext.ResourceThreadId メンバーを使用して、別のスレッドの代わりに FCB 構造を解放できます。 非同期ルーチンが完了すると、初期スレッドから取得された FCB 構造体を解放できます。 FCB 構造体を解放するには、RxReleaseFcbResourceForThreadInMRx を呼び出します。
要件
対象プラットフォーム |
デスクトップ |
ヘッダー |
Mrx.h (Mrx.h を含む) |
関連項目
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]