MRxLowIOSubmit[LOWIO_OP_FSCTL] routine

The MRxLowIOSubmit[LOWIO_OP_FSCTL] routine is called by RDBSS to request that a network mini-redirector issue file system control request on remote file.

Syntax

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_FSCTL];

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

Parameters

RxContext [in, out]
A pointer to the RX_CONTEXT structure. This parameter contains the IRP that is requesting the operation.

Return value

MRxLowIOSubmit[LOWIO_OP_FSCTL] returns STATUS_SUCCESS on success or an appropriate NTSTATUS value, such as one of the following:

Return code Description
STATUS_CONNECTION_DISCONNECTED

The connection was disconnected.

STATUS_INSUFFICIENT_RESOURCES

There were insufficient resources to complete the request.

STATUS_INVALID_DEVICE_REQUEST

An invalid device request was specified.

STATUS_INVALID_NETWORK_RESPONSE

An invalid response was received from the remote server.

STATUS_INVALID_PARAMETER

An invalid parameter was specified in RxContext.

STATUS_LINK_FAILED

The attempt to reconnect to a remote server to complete the request failed.

STATUS_NOT_IMPLEMENTED

This routine is not implemented.

STATUS_NOT_SUPPORTED

The FSCTL that was specified is not supported by the network mini-redirector.

STATUS_UNSUCCESSFUL

The call was unsuccessful.

Remarks

RDBSS calls MRxLowIOSubmit[LOWIO_OP_FSCTL] in response to receiving an IRP_MJ_FILE_SYSTEM_CONTROL request.

Before calling MRxLowIOSubmit[LOWIO_OP_FSCTL], RDBSS modifies the following members in the RX_CONTEXT structure pointed to by the RxContext parameter:

The LowIoContext.Operation member is set to LOWIO_OP_FSCTL.

The LowIoContext.ResourceThreadId member is set to the thread of the process that initiated the operation in RDBSS.

The LowIoContext.ParamsFor.FsCtl.FsControlCode member is set to the FSCTL major control code.

The LowIoContext.ParamsFor.FsCtl.MinorFunction member is set to the FSCTL minor control code.

The LowIoContext.ParamsFor.FsCtl.pInputBuffer member is set to the input buffer.

The LowIoContext.ParamsFor.FsCtl.InputBufferLength member is set to the input buffer length.

The LowIoContext.ParamsFor.FsCtl.pOutputBuffer member is set to the output buffer.

The LowIoContext.ParamsFor.FsCtl.OutputBufferLength member is set to the output buffer length.

The file system control code (FSCTL) requests handled by a network mini-redirector can be classified into one of several categories:

  • FSCTLs that are implemented and used by RDBSS and the network mini redirector

  • FSCTLs that are implemented and used only by the network mini-redirector

  • FSCTLs which should never be seen by the network mini-redirector. These FSCTLs are solely intended as a debugging aid.

While the MRxLowIOSubmit[LOWIO_OP_FSCTL] routine is processing, the LowIoContext.ResourceThreadId member of RX_CONTEXT is guaranteed to indicate the thread of the process that initiated the operation in RDBSS. The LowIoContext.ResourceThreadId member of RX_CONTEXT can be used to release the input resource on behalf of another thread. When an asynchronous routine completes, the input resource that was acquired from the initial thread can be released.

Requirements

Target platform

Desktop

Header

Mrx.h (include Mrx.h)

See also

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]