struttura RX_CONTEXT (rxcontx.h)

La struttura RX_CONTEXT incapsula un IRP da usare da RDBSS, mini-reindirizzamenti di rete e dal file system. La struttura RX_CONTEXT descrive un IRP durante l'elaborazione da un mini redirector 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;

Members

NodeTypeCode

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 di inclusione nodetype.h 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 mini-redirector 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.

NodeByteSize

Dimensione, in byte, della struttura. RDBSS imposta questo membro su sizeof( RX_CONTEXT) quando un RX_CONTEXT viene inizializzato nella routine RxInitializeContext . Se un driver mini-redirector 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 mini-redirector 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 questa RX_CONTEXT.

PendingReturned

Se è impostata 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 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 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-redirector di rete.

CurrentIrp

Puntatore all'IRP di origine. Questo membro non deve essere utilizzato da un driver mini-redirector 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 aperto(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 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 SERVIZI Desktop remoto 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 di 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-reindirizzamenti 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 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 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-redirector di rete.

StoredStatus

StoredStatusAlignment

InformationToReturn

IoStatusBlock

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

ForceLonglongAligmentDummyField

Membro di un'unione senza nome utilizzata 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 mini-redirector 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 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 mini-redirector 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 del mini-redirector 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 in base all'oggetto file. Questo membro è riservato per l'uso interno.

Info

Membro della struttura di un'unione senza nome utilizzata per le routine MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup e MRxSetVolumeInfo . RDBSS passa le informazioni nel membro della struttura Info al mini-redirector di rete e il mini-redirector di rete restituisce informazioni a RDBSS nel membro della struttura Info .

Info.FsInformationClass

Membro di un'unione senza nome utilizzata da RDBSS per passare il tipo di FS_INFORMATION_CLASS richiesto al driver del mini-redirector di rete. RDBSS passa le 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 di FILE_INFORMATION_CLASS inviata al driver del mini-redirector di rete. RDBSS passa informazioni nel membro FileInformationClass quando si chiama MrxQueryDirectory, MrxQueryFileInfo e MrxSetFileInfo.

Info.Buffer

Buffer usato per passare i dati da RDBSS al driver mini-redirector di rete e ricevere risposte dal driver mini-redirector di rete da RDBSS. Il membro Buffer viene utilizzato nelle routine MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e MrxSetVolumeInfo .

Info.Length

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

Info.LengthRemaining

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

Info.ReplaceIfExists

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

Info.AdvanceOnly

Questo membro è riservato per l'uso interno.

PrefixClaim

Membro della struttura di un'unione non denominata usata per le richieste di risoluzione dei prefisso inviate dal provider UNC multiplo (MUP). Un'attestazione di prefisso risulta 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 PrefixClaim al mini-reindirizzamento di rete e il mini-reindirizzamento di rete restituisce informazioni a RDBSS nella struttura PrefixClaim .

PrefixClaim.SuppliedPathName

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

PrefixClaim.NetRootType

Tipo dell'NET_ROOT richiesto. Questo membro non viene attualmente usato. RDBSS deduce il tipo del NET_ROOT dal membro SuppliedPathName .

PrefixClaim.pSecurityContext

Puntatore al contesto di sicurezza passato dalla richiesta da MUP.

Questo membro non viene attualmente usato. Il contesto di sicurezza viene passato nel membro Create.NtCreateParameters.SecurityContext dell'RX_CONTEXT, non in questo membro.

Create

Membro della struttura di un'unione senza nome usata per gestire le richieste di IRP_MJ_CREATE . Questo membro viene usato per gestire le richieste aperte dei file che comportano chiamate alla routine MRxCreate . Questo membro viene usato anche per le richieste di risoluzione dei prefisso. RDBSS passa informazioni nel membro Crea struttura al mini-reindirizzamento di rete e il mini-reindirizzamento di rete restituisce informazioni a RDBSS nel membro Crea struttura.

Create.NtCreateParameters

I parametri di creazione passati alla routine NtCreatefile in modalità utente. RDBSS imposta i membri della struttura NtCreateParameters in base ai membri Parameters.Create dell'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 prefisso 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 dell'IRP. Se il membro SdLength è diverso da zero, il descrittore di sicurezza viene passato al membro Info.Buffer al mini-reindirizzamento 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 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 dal parametro open connect open dell'albero.

Create.UserName

Stringa Unicode che rappresenta il nome utente responsabile della richiesta. Questo membro viene impostato dal parametro open connect open dell'albero.

Create.Password

Stringa Unicode che contiene la password per questo nome utente usato per l'autenticazione e l'autorizzazione. Questo membro viene impostato dal parametro open connect open dell'albero.

Create.UserDomainName

Stringa Unicode contenente il nome di dominio per questo nome utente.

QueryDirectory

Membro della struttura di un'unione senza nome usata per gestire le richieste di IRP_MJ_DIRECTORY_CONTROL . Questo membro viene usato per gestire le richieste di directory di query che comportano chiamate alla routine MrxQueryDirectory . RDBSS passa informazioni nel membro della struttura QueryDirectory al mini-reindirizzamento di rete.

QueryDirectory.FileIndex

Indice della voce in corrispondenza del quale iniziare a analizzare la directory se il membro IndexSpecified è impostato su TRUE. Questo parametro è impostato sul membro IrpSp-Parameters.QueryDirectory.FileIndex>.

QueryDirectory.RestartScan

Un valore booleano quando impostato su TRUE indica che l'analisi deve iniziare alla prima voce della directory. Quando questo valore è impostato su FALSE, l'analisi viene ripresa 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 solo una singola 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 quando impostato su TRUE indica di iniziare l'analisi nella voce della directory il cui indice viene specificato dal membro FileIndex . Questo parametro è impostato su TRUE se IrpSp-Flags> ha il bit SL_INDEX_SPECIFIED su.

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 ha il bit di FOBX_FLAG_MATCH_ALL. Per una query con caratteri jolly (".", ad esempio), RDBSS imposta il membro UnicodeQueryTemplate.Buffer della query FOBX associata alla query con caratteri jolly passata.

NotifyChangeDirectory

Membro della struttura di un'unione senza nome usata per gestire le richieste di 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 comportano 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 gestire le richieste di IRP_MJ_QUERY_EA . Questo membro viene usato per gestire le richieste di query sugli attributi estesi che generano chiamate alla routine MRxQueryEaInfo . RDBSS passa le informazioni nel membro della struttura QueryEa al mini-reindirizzamento 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 da eseguire una query. Questo parametro è impostato su IrpSp-Parameters.QueryEa.EaList>.

QueryEa.UserEaListLength

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

QueryEa.UserEaIndex

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

QueryEa.RestartScan

Un valore booleano quando impostato su TRUE indica che la query deve iniziare alla prima voce dell'attributo esteso. Quando questo valore è impostato su FALSE, l'analisi viene ripresa 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 quando impostato su TRUE indica che deve essere restituita solo una singola 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 quando impostato su TRUE indica di iniziare l'analisi nella voce degli attributi estesi l'indice specificato dal membro UserEaIndex . Questo parametro è impostato su TRUE se IrpSp-Flags> ha il bit SL_INDEX_SPECIFIED su.

QuerySecurity

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

QuerySecurity.SecurityInformation

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

QuerySecurity.Length

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

SetSecurity

Membro della struttura di un'unione senza nome usata per gestire le richieste di IRP_MJ_SET_SECURITY . Questo membro viene usato per gestire le richieste di sicurezza delle query che comportano chiamate alla routine MRxSetSdInfo . RDBSS passa 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 contenente 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 usata per gestire le richieste di IRP_MJ_QUERY_QUOTA . Questo membro viene usato per gestire le richieste di sicurezza delle query che comportano chiamate alla routine MRxQueryQuotaInfo . RDBSS passa informazioni nel membro della struttura QueryQuota al mini-reindirizzamento di rete.

QueryQuota.Length

Lunghezza, in byte, del buffer a cui punta il 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 è 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 quando impostato su TRUE indica che la query deve iniziare alla prima voce. Quando questo valore è impostato su FALSE, l'analisi viene ripresa 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.

QueryQuota.ReturnSingleEntry

Un valore booleano quando impostato su TRUE indica che deve essere restituita solo una singola 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 quando impostato su TRUE indica di iniziare l'analisi nella voce dell'elenco il cui indice viene specificato dal membro StartSid . Questo parametro è impostato su TRUE se IrpSp-Flags> ha il bit SL_INDEX_SPECIFIED su.

SetQuota

Membro della struttura di un'unione senza nome usata per gestire le richieste di IRP_MJ_SET_QUOTA . Questa struttura non è attualmente usata da RDBSS.

SetQuota.Length

Membro inutilizzato della struttura SetQuota .

DosVolumeFunction

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

DosVolumeFunction.VNetRoot

Membro inutilizzato della struttura DosVolumeFunction .

DosVolumeFunction.SrvCall

Membro inutilizzato della struttura DosVolumeFunction .

DosVolumeFunction.NetRoot

Membro inutilizzato della struttura DosVolumeFunction .

FlagsForLowIo

LowIoContext

AlsoCanonicalNameBuffer

LoudCompletionString

Membro inutilizzato della struttura RX_CONTEXT.

AcquireReleaseFcbTrackerX

TrackerHistoryPointer

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

ShadowCritOwner

StoredStatus

Membro di un'unione non denominata usata 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 dalla routine MRxQueryFileInfo quando l'operazione di query file non viene compresa da RDBSS.

StoredStatusAlignment

Membro di un'unione non denominata usata per forzare l'allineamento appropriato sul membro StoredStatus .

InformationToReturn

Membro di un'unione non denominata usata per restituire informazioni sullo stato da un driver di mini-reindirizzamento di rete per alcune operazioni di I/O (lettura, scrittura, FSCTL e così via) e 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 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 di RX_CONTEXT usando 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.

FlagsForLowIo

Set di opzioni impostate da RDBSS e passate a operazioni di I/O basse inviate al mini-reindirizzamento di rete. FlagsForLowIo è un membro della struttura non denominata usata per le richieste di I/O basse al mini-reindirizzamento di rete.

LowIoContext

Puntatore a una struttura LOWIO_CONTEXT passata al mini-reindirizzamento di rete. LowIoContext è un membro della struttura non denominata usata per le richieste di I/O basse inviate al mini-reindirizzamento di rete.

Commenti

La struttura RX_CONTEXT è una delle strutture dati fondamentali usate da RDBSS e mini-redirector di rete per gestire un pacchetto di richiesta I/O (IRP). La struttura di dati RX_CONTEXT incapsula un'IRP da usare da RDBSS, mini-reindirizzamento di rete e il file system. Una struttura di RX_CONTEXT include un puntatore a un singolo IRP e a tutti i contesti necessari per elaborare l'IRP.

Una struttura RX_CONTEXT viene talvolta definita contesto IRP o RxContext nel Kit di driver di finestra (WDK) o file di intestazione IFS Kit e altre risorse usate per lo sviluppo di driver di mini-reindirizzamento di rete.

Il RX_CONTEXT è una struttura di dati a cui sono associate informazioni aggiuntive fornite dai vari reindirizzamenti 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 reindirizzamento di rete, che viene quindi riservato per l'uso dal mini reindirizzamento. Questo approccio è costituito dall'allocazione di un'area pre-specificata, che corrisponde a tutti i mini reindirizzamenti di rete come parte di ogni RX_CONTEXT. Si tratta di un'area non formattata in cima alla quale è possibile imporre qualsiasi struttura desiderata dai vari reindirizzamenti di rete mini-reindirizzamento. Gli sviluppatori di driver mini-reindirizzamento di rete devono provare e definire il contesto privato associato per adattarsi a questa area predefinita definita nella struttura di dati RX_CONTEXT. I driver mini-reindirizzamento di rete che violano questa regola comportano una significativa penalità sulle prestazioni.

Molte routine e routine RDBSS esportate da un mini-reindirizzamento 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 l'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 dereferenza.

RDBSS fornisce una serie di routine usate per modificare un RX_CONTEXT e l'IRP associato. Queste routine vengono usate 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.

Requisiti

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

Vedi 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

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr