MRxLowIOSubmit[LOWIO_OP_IOCTL] ルーチン
MRxLowIOSubmit[LOWIO_OP_IOCTL] ルーチンは、ネットワーク ミニ リダイレクターに I/O システム制御要求を発行するために RDBSS によって呼び出されます。
構文
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_IOCTL];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_IOCTL](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
パラメーター
RxContext [in, out]
RX_CONTEXT 構造体へのポインター。 このパラメーターには、操作を要求している IRP が含まれています。
戻り値
MRxLowIOSubmit[LOWIO_OP_IOCTL] は、成功した場合の STATUS_SUCCESS や、次のいずれかのような該当する NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | 要求を完了するためのリソースが不足していました。 |
STATUS_INVALID_DEVICE_REQUEST | 無効なデバイス要求が指定されました。 |
STATUS_INVALID_PARAMETER | RxContext に無効なパラメータが指定されました。 |
STATUS_NOT_IMPLEMENTED | このルーチンは実装されていません。 |
STATUS_NOT_SUPPORTED | 指定された IOCTL は、ネットワーク ミニ リダイレクターではサポートされていません。 |
解説
RDBSS は、IRP_MJ_DEVICE_CONTROL または IRP_MJ_INTERNAL_DEVICE_CONTROL 要求の受信に応答して MRxLowIOSubmit[LOWIO_OP_IOCTL] を呼び出します。
MRxLowIOSubmit[LOWIO_OP_IOCTL] を呼び出す前に、RDBSS は RxContext パラメーターが指す RX_CONTEXT 構造体の次のメンバーを変更します。
LowIoContext.Operation メンバーが LOWIO_OP_IOCTL に設定されています。
LowIoContext.ResourceThreadId メンバーは、RDBSS で操作を開始したプロセスのスレッドに設定されます。
LowIoContext.ParamsFor.IoCtl.IoControlCode メンバーは IOCTL コントロール コードに設定されます。
LowIoContext.ParamsFor.IoCtl.pInputBuffer メンバーは入力バッファーに設定されます。
LowIoContext.ParamsFor.IoCtl.InputBufferLength メンバーは、入力バッファーの長さに設定されます。
LowIoContext.ParamsFor.IoCtl.pOutputBuffer メンバーは出力バッファーに設定されます。
LowIoContext.ParamsFor.IoCtl.OutputBufferLength メンバーは、出力バッファーの長さに設定されます。
MRxLowIOSubmit[LOWIO_OP_IOCTL] ルーチンが処理されている間、RX_CONTEXTの LowIoContext.ResourceThreadId メンバーは、RDBSS で操作を開始したプロセスのスレッドを示していることが保証されます。 RX_CONTEXTの LowIoContext.ResourceThreadId メンバーを使用して、別のスレッドの代わりに入力リソースを解放できます。 非同期ルーチンが完了すると、初期スレッドから取得された入力リソースを解放できます。
要件
対象プラットフォーム |
デスクトップ |
ヘッダー |
Mrx.h (Mrx.h を含む) |
関連項目
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]