struttura RX_CONTEXT (rxcontx.h)

La struttura RX_CONTEXT incapsula un IRP da usare da RDBSS, mini-reindirizzamenti di rete e dal file system. Descrive un IRP durante l'elaborazione da un mini-reindirizzamento di rete e contiene informazioni sullo stato che consentono il rilascio delle risorse globali al termine dell'IRP.

Sintassi

typedef struct _RX_CONTEXT {
  NODE_TYPE_CODE         NodeTypeCode;
  NODE_BYTE_SIZE         NodeByteSize;
  __volatile ULONG       ReferenceCount;
  LIST_ENTRY             ContextListEntry;
  UCHAR                  MajorFunction;
  UCHAR                  MinorFunction;
  BOOLEAN                PendingReturned;
  BOOLEAN                PostRequest;
  PDEVICE_OBJECT         RealDevice;
  PIRP                   CurrentIrp;
  PIO_STACK_LOCATION     CurrentIrpSp;
  PMRX_FCB               pFcb;
  PMRX_FOBX              pFobx;
  PMRX_SRV_OPEN          pRelevantSrvOpen;
  PNON_PAGED_FCB         NonPagedFcb;
  PRDBSS_DEVICE_OBJECT   RxDeviceObject;
  PETHREAD               OriginalThread;
  PETHREAD               LastExecutionThread;
  __volatile PVOID       LockManagerContext;
  PVOID                  RdbssDbgExtension;
  RX_SCAVENGER_ENTRY     ScavengerEntry;
  ULONG                  SerialNumber;
  ULONG                  FobxSerialNumber;
  ULONG                  Flags;
  BOOLEAN                FcbResourceAcquired;
  BOOLEAN                FcbPagingIoResourceAcquired;
  UCHAR                  MustSucceedDescriptorNumber;
  union {
    struct {
      union {
        NTSTATUS StoredStatus;
        PVOID    StoredStatusAlignment;
      };
      ULONG_PTR InformationToReturn;
    };
    IO_STATUS_BLOCK IoStatusBlock;
  };
  union {
    ULONGLONG ForceLonglongAligmentDummyField;
    PVOID     MRxContext[MRX_CONTEXT_FIELD_COUNT];
  };
  PVOID                  WriteOnlyOpenRetryContext;
  PMRX_CALLDOWN          MRxCancelRoutine;
  PRX_DISPATCH           ResumeRoutine;
  RX_WORK_QUEUE_ITEM     WorkQueueItem;
  LIST_ENTRY             OverflowListEntry;
  KEVENT                 SyncEvent;
  LIST_ENTRY             BlockedOperations;
  PFAST_MUTEX            BlockedOpsMutex;
  LIST_ENTRY             RxContextSerializationQLinks;
  union {
    struct {
      union {
        FS_INFORMATION_CLASS   FsInformationClass;
        FILE_INFORMATION_CLASS FileInformationClass;
      };
      PVOID   Buffer;
      union {
        LONG Length;
        LONG LengthRemaining;
      };
      BOOLEAN ReplaceIfExists;
      BOOLEAN AdvanceOnly;
    } Info;
    struct {
      UNICODE_STRING       SuppliedPathName;
      NET_ROOT_TYPE        NetRootType;
      PIO_SECURITY_CONTEXT pSecurityContext;
    } PrefixClaim;
  };
  union {
    struct {
      NT_CREATE_PARAMETERS NtCreateParameters;
      ULONG                ReturnedCreateInformation;
      PWCH                 CanonicalNameBuffer;
      PRX_PREFIX_ENTRY     NetNamePrefixEntry;
      PMRX_SRV_CALL        pSrvCall;
      PMRX_NET_ROOT        pNetRoot;
      PMRX_V_NET_ROOT      pVNetRoot;
      PVOID                EaBuffer;
      ULONG                EaLength;
      ULONG                SdLength;
      ULONG                PipeType;
      ULONG                PipeReadMode;
      ULONG                PipeCompletionMode;
      USHORT               Flags;
      NET_ROOT_TYPE        Type;
      UCHAR                RdrFlags;
      BOOLEAN              FcbAcquired;
      BOOLEAN              TryForScavengingOnSharingViolation;
      BOOLEAN              ScavengingAlreadyTried;
      BOOLEAN              ThisIsATreeConnectOpen;
      BOOLEAN              TreeConnectOpenDeferred;
      UNICODE_STRING       TransportName;
      UNICODE_STRING       UserName;
      UNICODE_STRING       Password;
      UNICODE_STRING       UserDomainName;
    } Create;
    struct {
      ULONG   FileIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
      BOOLEAN InitialQuery;
    } QueryDirectory;
    struct {
      PMRX_V_NET_ROOT pVNetRoot;
    } NotifyChangeDirectory;
    struct {
      PUCHAR  UserEaList;
      ULONG   UserEaListLength;
      ULONG   UserEaIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
    } QueryEa;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      ULONG                Length;
    } QuerySecurity;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      PSECURITY_DESCRIPTOR SecurityDescriptor;
    } SetSecurity;
    struct {
      ULONG                       Length;
      PSID                        StartSid;
      PFILE_GET_QUOTA_INFORMATION SidList;
      ULONG                       SidListLength;
      BOOLEAN                     RestartScan;
      BOOLEAN                     ReturnSingleEntry;
      BOOLEAN                     IndexSpecified;
    } QueryQuota;
    struct {
      ULONG Length;
    } SetQuota;
    struct {
      PV_NET_ROOT VNetRoot;
      PSRV_CALL   SrvCall;
      PNET_ROOT   NetRoot;
    } DosVolumeFunction;
    struct {
      ULONG         FlagsForLowIo;
      LOWIO_CONTEXT LowIoContext;
    };
  };
  PWCH                   AlsoCanonicalNameBuffer;
  PUNICODE_STRING        LoudCompletionString;
  __volatile LONG        AcquireReleaseFcbTrackerX;
  __volatile ULONG       TrackerHistoryPointer;
  RX_FCBTRACKER_CALLINFO TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE];
  ULONG                  ShadowCritOwner;
} RX_CONTEXT, *PRX_CONTEXT;

Membri

NodeTypeCode

Tipo di nodo univoco utilizzato per una struttura RX_CONTEXT. RDBSS imposta questo membro su RDBSS_NTC_RX_CONTEXT quando un RX_CONTEXT viene inizializzato in RxInitializeContext. Se un driver di mini-reindirizzamento di rete inizializza una struttura RX_CONTEXT utilizzando un altro metodo, questo membro deve essere impostato.

RDBSS definisce questo membro come parte di un'intestazione standard per tutte le strutture usate da RDBSS.

Tutti i tipi di struttura principali usati da RDBSS hanno un codice di tipo nodo a due byte univoco definito in nodetype.h che può essere usato per il debug. Questi tipi principali di struttura includono quanto segue:

NodeByteSize

Dimensione, in byte, di questa struttura. RDBSS imposta questo membro su sizeof( RX_CONTEXT) quando un RX_CONTEXT viene inizializzato nella routine RxInitializeContext. Se un driver di mini-reindirizzamento di rete inizializza una struttura RX_CONTEXT utilizzando un altro metodo, questo membro deve essere impostato.

RDBSS definisce questo membro come parte di un'intestazione standard per tutte le strutture usate da RDBSS.

ReferenceCount

Conteggio dei riferimenti per questa struttura dopo l'allocazione. RDBSS imposta questo membro su 1 quando un RX_CONTEXT viene allocato e inizializzato nella routine RxInitializeContext. Se un driver di mini-reindirizzamento di rete inizializza una struttura RX_CONTEXT utilizzando un altro metodo, questo membro deve essere impostato.

RDBSS definisce questo membro come parte di un'intestazione standard per tutte le strutture usate da RDBSS.

ContextListEntry

Voce di elenco per connettere questo RX_CONTEXT all'elenco di RX_CONTEXTS attivi.

MajorFunction

Funzione principale per l'IRP incapsulata da questo RX_CONTEXT.

MinorFunction

Funzione secondaria per l'IRP incapsulata da questo RX_CONTEXT.

PendingReturned

Se impostato su TRUE, specifica che RDBSS o un driver ha contrassegnato l'IRP in sospeso. Ogni routine IoCompletion deve controllare il valore di questo flag. Se il flag è TRUE e se la routine IoCompletion non restituirà STATUS_MORE_PROCESSING_REQUIRED, la routine deve chiamare IoMarkIrpPending per propagare lo stato in sospeso ai driver sopra di esso nello stack di dispositivi. Questo membro è simile allo stesso campo in IRP.

RDBSS imposta sempre questo membro su TRUE prima di chiamare il driver del mini-redirector di rete.

PostRequest

Se impostato su TRUE, indica se la richiesta associata deve essere inviata a un thread di lavoro RDBSS. Un mini-redirector di rete può impostare questo membro su TRUE per indicare che vuole pubblicare questa richiesta al processo del file system (FSP).

RealDevice

Puntatore all'oggetto dispositivo per il driver mini-redirector di rete di destinazione. RDBSS imposta questo membro sull'oggetto dispositivo per il driver del mini-redirector di rete quando un RX_CONTEXT viene allocato nella routine RxInitializeContext. Questo membro viene copiato dal membro FileObject->DeviceObject dallo stack IRP. L'oggetto dispositivo per il mini-redirector di rete viene archiviato anche nel membro della struttura RxDeviceObject.

Il membro RealDevice non è attualmente usato da RDBSS, ma può essere usato dai mini-reindirizzamenti di rete.

CurrentIrp

Puntatore all'IRP di origine. Questo membro non deve essere utilizzato da un driver di mini-reindirizzamento di rete.

CurrentIrpSp

Puntatore alla posizione dello stack IRP.

pFcb

Puntatore al blocco di controllo file associato (FCB) per questo IRP.

pFobx

Puntatore all'estensione dell'oggetto file associata (FOBX) per questo IRP.

pRelevantSrvOpen

Puntatore al server associato open(SRV_OPEN) per questo IRP.

NonPagedFcb

Puntatore al blocco di controllo file non di paging associato per questo IRP.

RxDeviceObject

Puntatore al RDBSS_DEVICE_OBJECT per il driver mini-redirector di rete di destinazione necessario per gli algoritmi della coda di lavoro. RDBSS imposta questo membro sul RDBSS_DEVICE_OBJECT per il mini-redirector di rete quando un RX_CONTEXT viene inizializzato nella routine RxInitializeContext. La struttura RxDeviceObject include un membro DeviceObject che contiene l'oggetto dispositivo per il driver del mini-redirector di rete, che corrisponde al membro realDevice del RX_CONTEXT.

OriginalThread

Puntatore al thread originale in cui è stata avviata la richiesta.

LastExecutionThread

Puntatore all'ultimo thread in cui è stata eseguita un'elaborazione associata al RX_CONTEXT se il thread è stato inserito nel processo del file system.

LockManagerContext

Puntatore al contesto di gestione blocchi. Questo membro è riservato per l'uso interno.

RdbssDbgExtension

Puntatore al contesto assegnato a RDBSS per il debug delle informazioni. Questo membro è riservato per l'uso interno.

ScavengerEntry

Puntatore all'elenco di elementi da scavenged. Questo membro è riservato per l'uso interno.

SerialNumber

Numero di serie per questa struttura RX_CONTEXT. Ogni struttura inizializzata da RDBSS ha un numero di serie assegnato quando la struttura viene inizializzata per la prima volta. Questo numero di serie è un numero incrementato di uno prima dell'impostazione del valore. RDBSS imposta questo membro quando un RX_CONTEXT viene inizializzato nella routine RxInitializeContext. Servizi Desktop remoto

FobxSerialNumber

Numero di serie per la struttura FOBX associata. Ogni struttura inizializzata da RDBSS ha un numero di serie assegnato quando la struttura viene inizializzata per la prima volta. Questo membro può essere usato dai mini-redirector di rete per verificare se più chiamate fanno parte della stessa operazione più grande e sono quindi più memorizzabili nella cache.

Flags

Maschera di bit di flag per questa struttura di RX_CONTEXT.

FcbResourceAcquired

Se impostato su TRUE, questo membro specifica che la risorsa FCB è stata acquisita per questa operazione. La risorsa FCB è uno dei meccanismi di blocco associati a un'operazione su un cluster di failover.

FcbPagingIoResourceAcquired

Se è impostata su TRUE, questo membro specifica che la risorsa di I/O di paging fcB è stata acquisita per questa operazione. La risorsa di I/O di paging FCB è uno dei meccanismi di blocco associati a un'operazione di I/O di paging in un'istanza del cluster di failover.

MustSucceedDescriptorNumber

Un membro inizialmente impostato su zero nella routine RxCreateRxContext. Questo membro non viene usato in altro modo da RDBSS, ma può essere usato dai mini-reindirizzamenti di rete.

StoredStatus

Membro di un'unione senza nome utilizzata per restituire informazioni sullo stato da un driver di mini-reindirizzamento di rete per operazioni di I/O basse. RDBSS imposta anche questo valore in base allo stato restituito dal MRxQueryFileInfo routine quando l'operazione di query file non viene riconosciuta da RDBSS.

StoredStatusAlignment

Membro di un'unione senza nome utilizzata per forzare l'allineamento corretto sul membro StoredStatus .

InformationToReturn

Membro di un'unione senza nome utilizzata per restituire informazioni sullo stato da un driver di mini-reindirizzamento di rete per alcune operazioni di I/O basse (lettura, scrittura, MAPPING E così via) e operazioni di MrxQueryXXX.

Tipo di nodo univoco utilizzato per una struttura RX_CONTEXT. Tutti i tipi di struttura principali (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB e FOBX, ad esempio) usati da RDBSS hanno un codice di tipo nodo a due byte univoco definito nel file nodetype.h include che può essere usato per il debug. RDBSS imposta questo membro su RDBSS_NTC_RX_CONTEXT quando un RX_CONTEXT viene inizializzato nella routine RxInitializeContext. Se un driver di mini-reindirizzamento di rete inizializza una struttura RX_CONTEXT utilizzando un altro metodo, questo membro deve essere impostato.

RDBSS definisce questo membro come parte di un'intestazione standard per tutte le strutture usate da RDBSS.

IoStatusBlock

Il blocco di stato di I/O usato da un mini-redirector di rete per restituire informazioni sullo stato. Il membro IoStatusBlock è membro di un'unione senza nome usata per restituire informazioni sullo stato.

ForceLonglongAligmentDummyField

Membro di un'unione senza nome usata per forzare l'allineamento corretto sul membro MRxContext[MRX_CONTEXT_FIELD_COUNT].

MRxContext[MRX_CONTEXT_FIELD_COUNT]

WriteOnlyOpenRetryContext

Puntatore che può essere usato per archiviare uno stato per il mini-reindirizzamento di rete. Questo membro non viene usato da RDBSS, ma può essere usato da un driver di mini-reindirizzamento di rete per indicare che un file viene memorizzato nella cache in un handle di sola scrittura.

MRxCancelRoutine

Puntatore alla routine di annullamento che può essere impostata da un driver del mini-redirector di rete.

ResumeRoutine

Questo membro è riservato per l'uso interno.

WorkQueueItem

Puntatore a un elemento della coda di lavoro che può essere usato da un driver di mini-reindirizzamento di rete durante l'elaborazione del RX_CONTEXT.

OverflowListEntry

Puntatore all'elenco head delle operazioni che devono essere rilasciate al completamento. Questo membro è riservato per l'uso interno.

SyncEvent

Puntatore a un EVENTO kernel che può essere usato da un driver di mini-reindirizzamento di rete per attendere durante l'elaborazione del RX_CONTEXT.

BlockedOperations

Puntatore all'elenco head delle operazioni bloccate che devono essere rilasciate al completamento. Questo membro è riservato per l'uso interno.

BlockedOpsMutex

Puntatore a un mutex che controlla la serializzazione delle operazioni bloccate. Questo membro è riservato per l'uso interno.

RxContextSerializationQLinks

Puntatore alla voce di elenco utilizzata per serializzare le operazioni pipe per ogni oggetto file. Questo membro è riservato per l'uso interno.

Info

Membro della struttura di un'unione senza nome utilizzata per le routine seguenti:

  • MRxQueryDirectory
  • MRxQueryFileInfo
  • MRxQueryVolumeInfo
  • MRxSetFileInfo
  • MRxSetFileInfoAtCleanup
  • MRxSetVolumeInfo

RDBSS passa informazioni nel membro della struttura informazioni al mini-reindirizzamento di rete e il mini-reindirizzamento di rete restituisce informazioni a RDBSS nel membro della struttura informazioni .

Info.FsInformationClass

Membro di un'unione senza nome utilizzata da RDBSS per passare il tipo di FS_INFORMATION_CLASS richiesto al driver del mini-reindirizzamento di rete. RDBSS passa informazioni nel membro FsInformationClass quando si chiama MrxQueryVolumeInfo e MrxSetVolumeInfo.

Info.FileInformationClass

Membro di un'unione senza nome usata da RDBSS per indicare il tipo di richiesta FILE_INFORMATION_CLASS inviata al driver del mini-redirector di rete. RDBSS passa informazioni nel membro FileInformationClass quando si chiama MrxQueryDirectory, MrxQueryFileInfoe MrxSetFileInfo.

Info.Buffer

Buffer usato per passare dati da RDBSS al driver del mini-redirector di rete e ricevere risposte dal driver del mini-redirector di rete da RDBSS. Il membro buffer viene utilizzato nelle routine mrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupe routine mrxSetVolumeInfo.

Info.Length

Membro di un'unione senza nome utilizzata per passare la lunghezza del membro buffer da RDBSS al driver del mini-redirector di rete. Il membro Length viene utilizzato nel MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e routine mrxSetVolumeInfo.

Info.LengthRemaining

Membro di un'unione senza nome usata per passare la lunghezza delle informazioni restituite nel membro buffer dal driver del mini-redirector di rete a RDBSS. Il membro LengthRemaining viene utilizzato nel MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, routineMRxSetFileInfoAtCleanup e mrxSetVolumeInfo.

Info.ReplaceIfExists

Valore booleano che indica se un file esistente deve essere sostituito durante un'operazione di ridenominazione. Il membro ReplaceIfExists viene utilizzato nella routine MrxSetFileInfo.

Info.AdvanceOnly

Questo membro è riservato per l'uso interno.

PrefixClaim

Membro della struttura di un'unione senza nome utilizzata per le richieste di risoluzione dei prefissi inviate dal provider MUP (Multiple UNC Provider). Un'attestazione di prefisso deriva da una richiesta di IRP_MJ_DEVICE_CONTROL da MUP a RDBSS per IOCTL_REDIR_QUERY_PATH o IOCTL_REDIR_QUERY_PATH_EX. RDBSS passa informazioni nella struttura prefisso al mini-reindirizzamento di rete e il mini-reindirizzamento di rete restituisce informazioni a RDBSS nella struttura prefisso .

PrefixClaim.SuppliedPathName

Stringa Unicode con terminazione non NULL che specifica il percorso UNC in cui eseguire la risoluzione del prefisso.

PrefixClaim.NetRootType

Tipo del NET_ROOT richiesto. Questo membro non è attualmente utilizzato. RDBSS deduce il tipo di NET_ROOT dal membro SuppliedPathName.

PrefixClaim.pSecurityContext

Puntatore al contesto di sicurezza passato dalla richiesta da MUP.

Questo membro non è attualmente utilizzato. Il contesto di sicurezza viene passato nel Create.NtCreateParameters.SecurityContext membro del RX_CONTEXT, non in questo membro.

Create

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_CREATE. Questo membro viene usato per gestire le richieste di apertura dei file che generano chiamate alla routine MRxCreate. Questo membro viene usato anche per le richieste di risoluzione dei prefissi. RDBSS passa le informazioni nel Creare membro della struttura al mini-reindirizzamento di rete e il mini-reindirizzamento di rete restituisce informazioni a RDBSS nel membro della struttura Create.

Create.NtCreateParameters

I parametri di creazione passati alla routine ntcreatefile modalità utente. RDBSS imposta i membri della struttura di NtCreateParameters in base ai membri Parameters.Create di IRP.

Create.ReturnedCreateInformation

Valore impostato dal mini-redirector di rete al completamento della chiamata MRxCreate.

Create.CanonicalNameBuffer

Puntatore alla stringa Unicode che rappresenta il nome del file fisico da aprire se il nome canonico è maggiore del buffer disponibile.

Create.NetNamePrefixEntry

Puntatore alla voce del prefisso della tabella NetName. Questo membro è riservato per l'uso interno.

Create.pSrvCall

Puntatore alla struttura di SRV_CALL associata.

Create.pNetRoot

Puntatore alla struttura di NET_ROOT associata.

Create.pVNetRoot

Puntatore alla struttura di V_NET_ROOT associata.

Create.EaBuffer

Puntatore al buffer degli attributi estesi. Questo membro è facoltativo.

Create.EaLength

Lunghezza del buffer degli attributi estesi, EaBuffer.

Create.SdLength

Lunghezza del descrittore di sicurezza. RDBSS imposta questo valore in base al valore del membro Parameters.Create.SecurityContext di IRP. Se il membro SdLength è diverso da zero, il descrittore di sicurezza viene passato nel membro Info.Buffer al mini-redirector di rete.

Create.PipeType

Tipo di pipe. Questo membro è riservato per l'uso interno.

Create.PipeReadMode

Modalità di lettura per una pipe. Questo membro è riservato per l'uso interno.

Create.PipeCompletionMode

Modalità di completamento per una pipe. Questo membro è riservato per l'uso interno.

Create.Flags

Flag di creazione

Create.Type

Tipo della struttura di NET_ROOT associata.

Create.RdrFlags

Create.FcbAcquired

Questo membro è riservato per l'uso interno.

Create.TryForScavengingOnSharingViolation

Questo membro è riservato per l'uso interno.

Create.ScavengingAlreadyTried

Questo membro è riservato per l'uso interno.

Create.ThisIsATreeConnectOpen

Valore booleano che indica se questa chiamata è una richiesta aperta di connessione ad albero con l'opzione FILE_CREATE_TREE_CONNECTION impostata nel membro IrpSp->Parameters.Create.Options.

Create.TreeConnectOpenDeferred

Valore booleano che indica che il mini-reindirizzamento di rete può scegliere di rinviare la richiesta aperta di connessione dell'albero.

Create.TransportName

Stringa Unicode che rappresenta il nome del trasporto. Questo membro viene impostato dai parametri aperti della connessione dell'albero.

Create.UserName

Stringa Unicode che rappresenta il nome utente responsabile della richiesta. Questo membro viene impostato dai parametri aperti della connessione dell'albero.

Create.Password

Stringa Unicode che contiene la password per questa UserName usata per l'autenticazione e l'autorizzazione. Questo membro viene impostato dai parametri aperti della connessione dell'albero.

Create.UserDomainName

Stringa Unicode che contiene il nome di dominio per questo UserName.

QueryDirectory

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_DIRECTORY_CONTROL. Questo membro viene usato per gestire le richieste di directory di query che generano chiamate alla routine MrxQueryDirectory. RDBSS passa le informazioni nel membro della struttura QueryDirectory al mini-redirector di rete.

QueryDirectory.FileIndex

Indice della voce in corrispondenza della quale iniziare l'analisi della directory se il membro indexSpecified è impostato su TRUE. Questo parametro è impostato sul membro IrpSp->Parameters.QueryDirectory.FileIn dex.

QueryDirectory.RestartScan

Un valore booleano se impostato su TRUE indica che l'analisi deve iniziare alla prima voce della directory. Quando questo valore è impostato su FALSE, l'analisi riprende da una chiamata precedente. Questo parametro deve essere impostato su TRUE quando si chiama per la prima volta. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_RESTART_SCAN.

QueryDirectory.ReturnSingleEntry

Un valore booleano impostato su TRUE indica che deve essere restituita una sola voce. Se questo parametro è TRUE, mrxQueryDirectory deve restituire solo la prima voce trovata. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_RETURN_SINGLE_ENTRY.

QueryDirectory.IndexSpecified

Un valore booleano se impostato su TRUE indica di avviare l'analisi nella voce nella directory il cui indice è specificato dal membro FileIndex. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_INDEX_SPECIFIED.

QueryDirectory.InitialQuery

Valore booleano impostato su TRUE quando la query non è una query con caratteri jolly (".", ad esempio). Questo membro è impostato su TRUE se il membro UnicodeQueryTemplate.Buffer del FOBX associato è NULL e il membro Flags del FOBX non dispone del bit FOBX_FLAG_MATCH_ALL. Per una query con caratteri jolly (".", ad esempio, RDBSS imposta il UnicodeQueryTemplate.Buffer membro del FOBX associato alla query con caratteri jolly superata.

NotifyChangeDirectory

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste IRP_MJ_DIRECTORY_CONTROL con una funzione secondaria di IRP_MN_NOTIFY_CHANGE_DIRECTORY. Questo membro viene usato per gestire le richieste di modifica della directory che generano chiamate alla routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]. RDBSS passa informazioni nel membro della struttura NotifyChangeDirectory e nella struttura pLowIoContext-ParamsFor.NotifyChangeDirectory al mini-reindirizzamento di rete.

NotifyChangeDirectory.pVNetRoot

Puntatore alla struttura V_NET_ROOT associata alla directory. Questo parametro è impostato sul membro IrpSp->FileObject->FsContext o sul membro IrpSp->FileObject->FsContext2 a seconda del tipo di nodo.

QueryEa

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_QUERY_EA. Questo membro viene usato per gestire le richieste di query degli attributi estesi che generano chiamate alla routine MRxQueryEaInfo . RDBSS passa le informazioni nel membro della struttura QueryEa al mini-redirector di rete.

QueryEa.UserEaList

Puntatore a un buffer di input fornito dal chiamante contenente una struttura FILE_GET_EA_INFORMATION che specifica gli attributi estesi su cui eseguire una query. Questo parametro è impostato su IrpSp->Parameters.QueryEa.EaList.

QueryEa.UserEaListLength

Lunghezza, in byte, del buffer a cui punta membro UserEaList. Questo parametro è impostato su IrpSp->Parameters.QueryEa.EaListLength.

QueryEa.UserEaIndex

Indice della voce in corrispondenza della quale iniziare l'analisi dell'elenco di attributi estesi. Questo parametro deve essere ignorato se il membro IndexSpecified non è impostato su TRUE o se QueryEaList membro punta a un elenco non vuoto. Questo parametro è impostato su IrpSp->Parameters.QueryEa.EaIndex.

QueryEa.RestartScan

Un valore booleano se impostato su TRUE indica che la query deve iniziare alla prima voce dell'attributo esteso. Quando questo valore è impostato su FALSE, l'analisi riprende da una chiamata precedente. Questo parametro deve essere impostato su TRUE quando si chiama per la prima volta. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_RESTART_SCAN.

QueryEa.ReturnSingleEntry

Un valore booleano se impostato su TRUE indica che deve essere restituita una sola voce. Se questo parametro è TRUE, MrxQueryEaInfo deve restituire solo la prima voce trovata. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_RETURN_SINGLE_ENTRY.

QueryEa.IndexSpecified

Un valore booleano se impostato su TRUE indica di iniziare l'analisi in corrispondenza della voce negli attributi estesi il cui indice è assegnato dal membro UserEaIndex. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_INDEX_SPECIFIED.

QuerySecurity

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_QUERY_SECURITY. Questo membro viene usato per gestire le richieste di sicurezza delle query che generano chiamate alla routine MRxQuerySdInfo . RDBSS passa informazioni nel membro della struttura QuerySecurity al mini-reindirizzamento di rete.

QuerySecurity.SecurityInformation

Puntatore a un buffer di input fornito dal chiamante contenente una struttura SECURITY_INFORMATION che specifica l'operazione di cui eseguire la query. Questo parametro è impostato su IrpSp->Parameters.QuerySecurity.SecurityInformation.

QuerySecurity.Length

Lunghezza, in byte, del buffer a cui punta membro SecurityInformation. Questo parametro è impostato su IrpSp->Parameters.QuerySecurity.Length.

SetSecurity

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste IRP_MJ_SET_SECURITY. Questo membro viene usato per gestire le richieste di sicurezza delle query che generano chiamate alla routine MRxSetSdInfo. RDBSS passa le informazioni nel membro della struttura SetSecurity al mini-redirector di rete.

SetSecurity.SecurityInformation

Puntatore a un buffer di input fornito dal chiamante contenente una struttura SECURITY_INFORMATION che specifica quali informazioni di sicurezza devono essere impostate nel descrittore di sicurezza. Questo parametro è impostato su IrpSp->Parameters.SetSecurity.SecurityInformation.

SetSecurity.SecurityDescriptor

Puntatore a una struttura SECURITY_DESCRIPTOR che contiene i valori delle informazioni di sicurezza da assegnare all'oggetto. Questo parametro è impostato su IrpSp->Parameters.SetSecurity.SecurityDescriptor.

QueryQuota

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_QUERY_QUOTA. Questo membro viene usato per gestire le richieste di sicurezza delle query che generano chiamate alla routine MRxQueryQuotaInfo . RDBSS passa informazioni nel membro della struttura QueryQuota al mini-redirector di rete.

QueryQuota.Length

Lunghezza, in byte, del buffer a cui punta membro StartSid. Questo parametro è impostato su IrpSp->Parameters.QueryQuota.Length.

QueryQuota.StartSid

Puntatore facoltativo a un SID che indica che le informazioni restituite iniziano con una voce diversa dalla prima voce. Questo parametro viene ignorato se viene specificato il membro SidList . Questo parametro è impostato su IrpSp->Parameters.QueryQuota.StartSid.

QueryQuota.SidList

Puntatore facoltativo a un elenco di SID le cui informazioni sulla quota devono essere restituite. Ogni voce nell'elenco è una struttura FILE_GET_QUOTA_INFORMATION. Questo parametro è impostato su IrpSp->Parameters.QueryQuota.SidList.

QueryQuota.SidListLength

Lunghezza, in byte, dell'elenco di SID nel membro SidList, se specificato. Questo parametro è impostato su IrpSp->Parameters.QueryQuota.SidListLength.

QueryQuota.RestartScan

Un valore booleano se impostato su TRUE indica che la query deve iniziare alla prima voce. Quando questo valore è impostato su FALSE, l'analisi riprende da una chiamata precedente. Questo parametro deve essere impostato su TRUE quando si chiama per la prima volta. Questo parametro è impostato su TRUE se IrpSp->Flagsha il bit di SL_RESTART_SCAN.

QueryQuota.ReturnSingleEntry

Un valore booleano se impostato su TRUE indica che deve essere restituita una sola voce. Se questo parametro è TRUE, MrxQueryQuotaInfo deve restituire solo la prima voce trovata. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_RETURN_SINGLE_ENTRY.

QueryQuota.IndexSpecified

Un valore booleano se impostato su TRUE indica di iniziare l'analisi in corrispondenza della voce nell'elenco il cui indice è specificato dal membro StartSid. Questo parametro è impostato su TRUE se IrpSp->Flags ha il bit di SL_INDEX_SPECIFIED.

SetQuota

Membro della struttura di un'unione senza nome utilizzata per la gestione delle richieste di IRP_MJ_SET_QUOTA. Questa struttura non è attualmente utilizzata da RDBSS.

SetQuota.Length

Membro inutilizzato della struttura SetQuota.

DosVolumeFunction

Membro della struttura di un'unione senza nome. Questa struttura non è attualmente utilizzata da RDBSS.

DosVolumeFunction.VNetRoot

Membro inutilizzato della struttura DosVolumeFunction di .

DosVolumeFunction.SrvCall

Membro inutilizzato della struttura DosVolumeFunction di .

DosVolumeFunction.NetRoot

Membro inutilizzato della struttura DosVolumeFunction di .

FlagsForLowIo

Set di RX_CONTENT_CREATE_FLAGS impostato da RDBSS e passato a operazioni di I/O basse inviate al mini-redirector di rete. FlagsForLowIo è membro di una struttura senza nome usata per le richieste di I/O basse al mini-redirector di rete.

LowIoContext

Puntatore a una struttura LOWIO_CONTEXT passata al mini-reindirizzamento di rete. lowIoContext è un membro della struttura senza nome usata per le richieste di I/O basse inviate al mini-redirector di rete.

AlsoCanonicalNameBuffer

Puntatore alla stringa Unicode che rappresenta il nome del file fisico da aprire se il nome canonico è maggiore del buffer disponibile.

LoudCompletionString

Membro inutilizzato della struttura RX_CONTEXT.

AcquireReleaseFcbTrackerX

Riservato per l'uso del sistema.

TrackerHistoryPointer

Riservato per l'uso del sistema.

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

Riservato per l'uso del sistema.

ShadowCritOwner

Riservato per l'uso del sistema.

Osservazioni

La struttura RX_CONTEXT è una delle strutture di dati fondamentali usate da RDBSS e mini-redirector di rete per gestire un pacchetto di richiesta di I/O (IRP). Incapsula un IRP da usare da RDBSS, mini-reindirizzamenti di rete e dal file system. Una struttura RX_CONTEXT include un puntatore a un singolo IRP e a tutto il contesto necessario per elaborare l'IRP.

Una struttura RX_CONTEXT viene talvolta definita contesto IRP o RxContext nei file di intestazione WDK e altre risorse usate per lo sviluppo di driver di mini-reindirizzamento di rete.

Il RX_CONTEXT è una struttura di dati a cui sono collegate informazioni aggiuntive fornite dai vari mini redirector di rete. Il RX_CONTEXT include campi per l'allocazione delle dimensioni di ogni struttura RX_CONTEXT in base a un importo pre-specificato per ogni mini redirector di rete, che viene quindi riservato per l'uso da parte del mini redirector. Questo approccio consiste nell'allocazione di un'area pre-specificata, che è la stessa per tutti i mini redirector di rete come parte di ogni RX_CONTEXT. Si tratta di un'area non formattata sopra la quale qualsiasi struttura desiderata può essere imposto dai vari mini redirector di rete. Gli sviluppatori di driver di mini-reindirizzamento di rete devono provare a definire il contesto privato associato per adattarsi a questa area predefinita definita nella struttura dei dati RX_CONTEXT. I driver mini-redirector di rete che violano questa regola comportano una riduzione significativa delle prestazioni.

Molte routine e routine RDBSS esportate da un mini-redirector di rete fanno riferimento alle strutture RX_CONTEXT nel thread di avvio o in un altro thread usato dalla routine. Pertanto, le strutture RX_CONTEXT allocate vengono conteggiate per gestire il loro uso per le operazioni asincrone. Quando il conteggio dei riferimenti passa a zero, la struttura RX_CONTEXT allocata può essere finalizzata e rilasciata nell'ultima operazione di dereferenziazione.

RDBSS fornisce una serie di routine usate per modificare un RX_CONTEXT e l'IRP associato. Queste routine vengono utilizzate per allocare, inizializzare ed eliminare un RX_CONTEXT. Queste routine vengono usate anche per completare l'IRP associato a un RX_CONTEXT e configurare una routine di annullamento per un RX_CONTEXT.

Fabbisogno

Requisito Valore
intestazione rxcontx.h (include Rx.h, Rxcontx.h)

Vedere anche

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreare

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr