MRxLowIOSubmit[LOWIO_OP_IOCTL] routine
The MRxLowIOSubmit[LOWIO_OP_IOCTL] routine is called by RDBSS to issue an I/O system control request to the network mini-redirector.
Syntax
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_IOCTL];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_IOCTL](
_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_IOCTL] returns STATUS_SUCCESS on success or an appropriate NTSTATUS value, such as one of the following:
Return code | Description |
---|---|
STATUS_INSUFFICIENT_RESOURCES | There were insufficient resources to complete the request. |
STATUS_INVALID_DEVICE_REQUEST | An invalid device request was specified. |
STATUS_INVALID_PARAMETER | An invalid parameter was specified in RxContext. |
STATUS_NOT_IMPLEMENTED | This routine is not implemented. |
STATUS_NOT_SUPPORTED | The IOCTL that was specified is not supported by the network mini-redirector. |
Remarks
RDBSS calls MRxLowIOSubmit[LOWIO_OP_IOCTL] in response to receiving an IRP_MJ_DEVICE_CONTROL or IRP_MJ_INTERNAL_DEVICE_CONTROL requests.
Before calling MRxLowIOSubmit[LOWIO_OP_IOCTL], 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_IOCTL.
The LowIoContext.ResourceThreadId member is set to the thread of the process that initiated the operation in RDBSS.
The LowIoContext.ParamsFor.IoCtl.IoControlCode member is set to the IOCTL control code.
The LowIoContext.ParamsFor.IoCtl.pInputBuffer member is set to the input buffer.
The LowIoContext.ParamsFor.IoCtl.InputBufferLength member is set to the input buffer length.
The LowIoContext.ParamsFor.IoCtl.pOutputBuffer member is set to the output buffer.
The LowIoContext.ParamsFor.IoCtl.OutputBufferLength member is set to the output buffer length.
While the MRxLowIOSubmit[LOWIO_OP_IOCTL] 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_FSCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]