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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per