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:
- RX_CONTEXT
- SRV_CALL
- NET_ROOT
- V_NET_ROOT
- SRV_OPEN
- FCB
- FOBX
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
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
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
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
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
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
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
Info.Length
Membro di un'unione senza nome utilizzata per passare la lunghezza del membro buffer
Info.LengthRemaining
Membro di un'unione senza nome usata per passare la lunghezza delle informazioni restituite nel membro buffer
Info.ReplaceIfExists
Valore booleano che indica se un file esistente deve essere sostituito durante un'operazione di ridenominazione. Il membro ReplaceIfExists
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
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
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
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.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
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
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
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
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
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) |