MRxQueryEaInfo routine
The MRxQueryEaInfo routine is called by RDBSS to request that a network mini-redirector query extended attribute information on a file system object.
Syntax
PMRX_CALLDOWN MRxQueryEaInfo;
NTSTATUS MRxQueryEaInfo(
_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
MRxQueryEaInfo returns STATUS_SUCCESS on success or an appropriate NTSTATUS value, such as one of the following:
Return code | Description |
---|---|
STATUS_ACCESS_DENIED | The caller lacked the proper security for this operation. |
STATUS_BUFFER_OVERFLOW | The buffer to receive the extended attribute information was too small. This return value should be considered success and as much valid data as possible should be returned in the Info.Buffer member of the RX_CONTEXT structure pointed to by the RxContext parameter. |
STATUS_BUFFER_TOO_SMALL | The buffer is too small to receive the requested data. If this value is returned, the InformationToReturn member of the RX_CONTEXT structure pointed to by the RxContext parameter should be set to the minimum size of the expected buffer for the call to succeed. |
STATUS_CONNECTION_DISCONNECTED | The connection was disconnected. |
STATUS_EA_CORRUPT_ERROR | Invalid extended attribute information was received from the remote server. |
STATUS_INSUFFICIENT_RESOURCES | There were insufficient resources to complete the query. |
STATUS_INVALID_PARAMETER | An invalid parameter was specified. |
STATUS_NONEXISTENT_EA_ENTRY | There are no extended attributes on the file object and the user supplied an extended attribute index. |
STATUS_NOT_SUPPORTED | Extended attributes are not supported. |
STATUS_ONLY_IF_CONNECTED | The SRV_OPEN structure is not connected. |
STATUS_REQUEST_ABORTED | The network request was aborted. |
Remarks
RDBSS issues a call to MRxQueryEaInfo in response to receiving an IRP_MJ_QUERY_EA request.
Before calling MRxQueryEaInfo, RDBSS modifies the following members in the RX_CONTEXT structure pointed to by the RxContext parameter:
The Info.Buffer member is set to the user buffer from I/O request packet. This buffer has already been locked by RDBSS if needed.
The Info.LengthRemaining member is set to IrpSp->Parameters.QueryEa.Length.
The QueryEa.UserEaList member is set to IrpSp->Parameters.QueryEa.EaList.
The QueryEa.UserEaListLength member is set to IrpSp->Parameters.QueryEa.EaListLength.
The QueryEa.UserEaIndex member is set to IrpSp->Parameters.QueryEa.EaIndex.
The QueryEa.RestartScan member is set to nonzero if IrpSp->Flags has the SL_RESTART_SCAN bit on.
The QueryEa.ReturnSingleEntry member is set to nonzero if IrpSp->Flags has the SL_RETURN_SINGLE_ENTRY bit on.
The QueryEa.IndexSpecified member is set to nonzero if IrpSp->Flags has the SL_INDEX_SPECIFIED bit on.
On success, MRxQueryEaInfo should set the Info.LengthRemaininging member of the RX_CONTEXT structure to the length of extended attribute information returned and also update the Fobx->OffsetOfNextEaToReturn member. If the call to MRxQueryEaInfo was successful, RDBSS sets the IoStatus.Information member of the IRP to IrpSp->Parameters.QueryEa.Length minus the Info.LengthRemaining member of RX_CONTEXT.
Requirements
Target platform |
Desktop |
Header |
Mrx.h (include Mrx.h) |