estrutura RX_CONTEXT (rxcontx.h)
A estrutura RX_CONTEXT encapsula um IRP para uso pelo RDBSS, pelos minidiretórios de rede e pelo sistema de arquivos. A estrutura RX_CONTEXT descreve um IRP enquanto ele está sendo processado por um minidiretório de rede e contém informações de estado que permitem que recursos globais sejam liberados à medida que o IRP é concluído.
Sintaxe
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;
Membros
NodeTypeCode
O tipo de nó exclusivo usado para uma estrutura de RX_CONTEXT. Todos os principais tipos de estrutura (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB e FOBX, por exemplo) usados pelo RDBSS têm um código de tipo de nó de dois bytes exclusivo definido no arquivo de inclusão nodetype.h que pode ser usado para depuração. O RDBSS define esse membro como RDBSS_NTC_RX_CONTEXT quando um RX_CONTEXT é inicializado na rotina RxInitializeContext . Se um driver de minidiretório de rede inicializar uma estrutura RX_CONTEXT usando algum outro método, esse membro deverá ser definido.
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
NodeByteSize
O tamanho, em bytes, dessa estrutura. O RDBSS define esse membro como sizeof( RX_CONTEXT) quando um RX_CONTEXT é inicializado na rotina RxInitializeContext . Se um driver de minidiretório de rede inicializar uma estrutura RX_CONTEXT usando algum outro método, esse membro deverá ser definido.
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
ReferenceCount
A contagem de referência para essa estrutura depois que ela é alocada. O RDBSS define esse membro como 1 quando um RX_CONTEXT é alocado e inicializado na rotina RxInitializeContext . Se um driver de minidiretório de rede inicializar uma estrutura RX_CONTEXT usando algum outro método, esse membro deverá ser definido.
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
ContextListEntry
A entrada de lista para conectar esse RX_CONTEXT à lista de RX_CONTEXTS ativos.
MajorFunction
A função principal para o IRP encapsulado por esse RX_CONTEXT.
MinorFunction
A função secundária para o IRP encapsulado por esse RX_CONTEXT.
PendingReturned
Se definido como TRUE, isso especifica que o RDBSS ou um driver marcou o IRP pendente. Cada rotina IoCompletion deve marcar o valor desse sinalizador. Se o sinalizador for TRUE e se a rotina IoCompletion não retornar STATUS_MORE_PROCESSING_REQUIRED, a rotina deverá chamar IoMarkIrpPending para propagar o status pendente para drivers acima dele na pilha do dispositivo. Esse membro é semelhante ao mesmo campo no IRP.
O RDBSS sempre define esse membro como TRUE antes de chamar o driver de minidiretório de rede.
PostRequest
Se definido como TRUE, isso indica se a solicitação associada deve ser postada em um thread de trabalho rdbss. Um minidiretório de rede pode definir esse membro como TRUE para indicar que ele deseja postar essa solicitação no FSP (processo do sistema de arquivos).
RealDevice
Um ponteiro para o objeto do dispositivo para o driver de minidiretório de rede de destino. O RDBSS define esse membro como o objeto do dispositivo para o driver de minidiretório de rede quando um RX_CONTEXT é alocado na rotina RxInitializeContext . Esse membro é copiado do membro FileObject-DeviceObject> da pilha IRP. O objeto de dispositivo para o minidiretório de rede também é armazenado no membro da estrutura RxDeviceObject .
O membro RealDevice não é usado atualmente pelo RDBSS, mas pode ser usado por minidiretórios de rede.
CurrentIrp
Um ponteiro para o IRP de origem. Esse membro não deve ser usado por um driver de minidiretório de rede.
CurrentIrpSp
Um ponteiro para o local da pilha IRP.
pFcb
Um ponteiro para o FCB (bloco de controle de arquivo) associado para esse IRP.
pFobx
Um ponteiro para a FOBX (extensão de objeto de arquivo) associada para esse IRP.
pRelevantSrvOpen
Um ponteiro para o servidor associado open(SRV_OPEN) para este IRP.
NonPagedFcb
Um ponteiro para o FCB (bloco de controle de arquivo) não paginado associado para esse IRP.
RxDeviceObject
Um ponteiro para o RDBSS_DEVICE_OBJECT para o driver de minidiretório de rede de destino que é necessário para algoritmos de fila de trabalho. O RDBSS define esse membro como o RDBSS_DEVICE_OBJECT para o minidiretório de rede quando um RX_CONTEXT é inicializado na rotina RxInitializeContext . A estrutura RxDeviceObject inclui um membro DeviceObject que contém o objeto de dispositivo para o driver de minidiretório de rede que é o mesmo que o membro RealDevice do RX_CONTEXT.
OriginalThread
Um ponteiro para o thread original no qual a solicitação foi iniciada.
LastExecutionThread
Um ponteiro para o último thread no qual algum processamento associado ao RX_CONTEXT foi feito se o thread foi postado no processo do sistema de arquivos.
LockManagerContext
Um ponteiro para o contexto do gerenciador de bloqueios. Esse membro é reservado para uso interno.
RdbssDbgExtension
Um ponteiro para o contexto fornecido ao RDBSS para informações de depuração. Esse membro é reservado para uso interno.
ScavengerEntry
Um ponteiro para a lista de itens a serem coletados. Esse membro é reservado para uso interno.
SerialNumber
O número de série dessa estrutura RX_CONTEXT. Cada estrutura inicializada pelo RDBSS tem um número de série atribuído quando a estrutura é inicializada pela primeira vez. Esse número de série é um número incrementado por um antes que o valor seja definido. O RDBSS define esse membro quando um RX_CONTEXT é inicializado na rotina RxInitializeContext . RDBSS
FobxSerialNumber
O número de série da estrutura FOBX associada. Cada estrutura inicializada pelo RDBSS tem um número de série atribuído quando a estrutura é inicializada pela primeira vez. Esse membro pode ser usado por minidiretórios de rede para ver se várias chamadas fazem parte da mesma operação maior e, portanto, são mais em cache.
Flags
Uma máscara de bits de sinalizadores para essa estrutura RX_CONTEXT.
FcbResourceAcquired
Se definido como TRUE, esse membro especifica que o recurso FCB foi adquirido para essa operação. O recurso FCB é um dos mecanismos de bloqueio associados a uma operação em um FCB.
FcbPagingIoResourceAcquired
Se definido como TRUE, esse membro especifica que o recurso de E/S de paginação fcb foi adquirido para esta operação. O recurso de E/S de paginação fcb é um dos mecanismos de bloqueio associados a uma operação de E/S de paginação em um FCB.
MustSucceedDescriptorNumber
Um membro inicialmente definido como zero na rotina RxCreateRxContext . Esse membro não é usado de outra forma pelo RDBSS, mas pode ser usado por minidiretórios de rede.
StoredStatus
StoredStatusAlignment
InformationToReturn
IoStatusBlock
A E/S status bloquear o uso por um minidiretório de rede para retornar informações de status. O membro IoStatusBlock é membro de uma união sem nome usada para retornar status informações.
ForceLonglongAligmentDummyField
Um membro de uma união sem nome usada para forçar o alinhamento adequado no membro MRxContext[MRX_CONTEXT_FIELD_COUNT] .
MRxContext[MRX_CONTEXT_FIELD_COUNT]
WriteOnlyOpenRetryContext
Um ponteiro que pode ser usado para armazenar algum estado para o minidiretório de rede. Esse membro não é usado pelo RDBSS, mas pode ser usado por um driver de minidiretório de rede para indicar que um arquivo é armazenado em cache em um identificador somente gravação.
MRxCancelRoutine
Um ponteiro para a rotina de cancelamento que pode ser definida por um driver de minidiretório de rede.
ResumeRoutine
Esse membro é reservado para uso interno.
WorkQueueItem
Um ponteiro para um item de fila de trabalho que pode ser usado por um driver de minidiretório de rede durante o processamento do RX_CONTEXT.
OverflowListEntry
Um ponteiro para o cabeçalho de lista de operações que serão lançadas após a conclusão. Esse membro é reservado para uso interno.
SyncEvent
Um ponteiro para um EVENTO de kernel que pode ser usado por um driver de minidiretório de rede para aguardar durante o processamento do RX_CONTEXT.
BlockedOperations
Um ponteiro para o cabeçalho da lista de operações bloqueadas que serão lançadas após a conclusão. Esse membro é reservado para uso interno.
BlockedOpsMutex
Um ponteiro para um mutex que controla a serialização das operações bloqueadas. Esse membro é reservado para uso interno.
RxContextSerializationQLinks
Um ponteiro para a entrada de lista usada para serializar operações de pipe por objeto de arquivo. Esse membro é reservado para uso interno.
Info
Um membro de estrutura de uma união sem nome usada para as rotinas MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup e MRxSetVolumeInfo . O RDBSS passa informações no membro da estrutura Info para o minidiretório de rede e o minidiretório de rede retorna informações para RDBSS no membro da estrutura Info .
Info.FsInformationClass
Um membro de uma união sem nome usada pelo RDBSS para passar o tipo de FS_INFORMATION_CLASS que é solicitado para o driver de minidiretório de rede. O RDBSS passa informações no membro FsInformationClass ao chamar **MrxQueryVolumeInfo **e MrxSetVolumeInfo.
Info.FileInformationClass
Um membro de uma união sem nome usada pelo RDBSS para indicar o tipo de FILE_INFORMATION_CLASS solicitação enviada ao driver de minidiretório de rede. O RDBSS passa informações no membro FileInformationClass ao chamar MrxQueryDirectory, MrxQueryFileInfo e MrxSetFileInfo.
Info.Buffer
Um buffer usado para passar dados do RDBSS para o driver de minidiretório de rede e receber respostas do driver de minidiretório de rede pelo RDBSS. O membro Buffer é usado nas rotinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e MrxSetVolumeInfo .
Info.Length
Um membro de uma união sem nome usada para passar o comprimento do membro buffer do RDBSS para o driver de minidiretório de rede. O membro Length é usado nas rotinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e MrxSetVolumeInfo .
Info.LengthRemaining
Um membro de uma união sem nome usada para passar o comprimento das informações retornadas no membro buffer do driver de minidiretório de rede para RDBSS. O membro LengthRemaining é usado nas rotinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e MrxSetVolumeInfo .
Info.ReplaceIfExists
Um valor booliano que indica se um arquivo existente deve ser substituído durante uma operação de renomeação. O membro ReplaceIfExists é usado na rotina MrxSetFileInfo .
Info.AdvanceOnly
Esse membro é reservado para uso interno.
PrefixClaim
Um membro de estrutura de uma união sem nome usada para solicitações de resolução de prefixo enviadas do MUP (Provedor Multi UNC). Uma declaração de prefixo resulta de uma solicitação IRP_MJ_DEVICE_CONTROL de MUP para RDBSS para IOCTL_REDIR_QUERY_PATH ou IOCTL_REDIR_QUERY_PATH_EX. O RDBSS passa informações na estrutura PrefixClaim para o minidiretório de rede e o minidiretório de rede retorna informações para RDBSS na estrutura PrefixClaim .
PrefixClaim.SuppliedPathName
Uma cadeia de caracteres Unicode terminada não NULL especificando o caminho UNC no qual executar a resolução de prefixo.
PrefixClaim.NetRootType
O tipo do NET_ROOT solicitado. Este membro não é usado no momento. O RDBSS deduz o tipo do NET_ROOT do membro SuppliedPathName .
PrefixClaim.pSecurityContext
Um ponteiro para o contexto de segurança passado da solicitação do MUP.
Este membro não é usado no momento. O contexto de segurança é passado no membro Create.NtCreateParameters.SecurityContext do RX_CONTEXT, não neste membro.
Create
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_CREATE . Esse membro é usado para lidar com solicitações abertas de arquivo que resultam em chamadas para a rotina MRxCreate . Esse membro também é usado para solicitações de resolução de prefixo. O RDBSS passa informações no membro Criar estrutura para o minidiretório de rede e o minidiretório de rede retorna informações para RDBSS no membro Criar estrutura.
Create.NtCreateParameters
Os parâmetros create passados para a rotina NtCreatefile do modo de usuário. O RDBSS define os membros da estrutura NtCreateParameters com base nos membros Parameters.Create do IRP.
Create.ReturnedCreateInformation
Um valor definido pelo minidiretório de rede após a conclusão da chamada MRxCreate .
Create.CanonicalNameBuffer
Um ponteiro para a cadeia de caracteres Unicode que representa o nome do arquivo físico a ser aberto se o nome canônico for maior que o buffer disponível.
Create.NetNamePrefixEntry
Um ponteiro para a entrada de prefixo da tabela NetName. Esse membro é reservado para uso interno.
Create.pSrvCall
Um ponteiro para a estrutura de SRV_CALL associada.
Create.pNetRoot
Um ponteiro para a estrutura de NET_ROOT associada.
Create.pVNetRoot
Um ponteiro para a estrutura de V_NET_ROOT associada.
Create.EaBuffer
Um ponteiro para o buffer de atributos estendidos. Esse membro é opcional.
Create.EaLength
O comprimento do buffer de atributos estendidos, EaBuffer.
Create.SdLength
O comprimento do descritor de segurança. O RDBSS define isso com base no valor do membro Parameters.Create.SecurityContext do IRP. Se o membro SdLength não for zero, o descritor de segurança será passado no membro Info.Buffer para o minidiretório de rede.
Create.PipeType
O tipo de um pipe. Esse membro é reservado para uso interno.
Create.PipeReadMode
O modo de leitura de um pipe. Esse membro é reservado para uso interno.
Create.PipeCompletionMode
O modo de conclusão de um pipe. Esse membro é reservado para uso interno.
Create.Flags
Os sinalizadores de criação
Create.Type
O tipo da estrutura NET_ROOT associada.
Create.RdrFlags
Create.FcbAcquired
Esse membro é reservado para uso interno.
Create.TryForScavengingOnSharingViolation
Esse membro é reservado para uso interno.
Create.ScavengingAlreadyTried
Esse membro é reservado para uso interno.
Create.ThisIsATreeConnectOpen
Um valor booliano que indica se essa chamada é uma solicitação de conexão de árvore aberta com a opção FILE_CREATE_TREE_CONNECTION definida no membro IrpSp-Parameters.Create.Options>.
Create.TreeConnectOpenDeferred
Um valor booliano que indica que o minidiretório de rede pode optar por adiar a solicitação de conexão de árvore aberta.
Create.TransportName
Uma cadeia de caracteres Unicode que representa o nome do transporte. Esse membro é definido a partir dos parâmetros abertos de conexão de árvore.
Create.UserName
Uma cadeia de caracteres Unicode que representa o nome de usuário responsável pela solicitação. Esse membro é definido a partir dos parâmetros abertos de conexão de árvore.
Create.Password
Uma cadeia de caracteres Unicode que contém a senha deste UserName usada para autenticação e autorização. Esse membro é definido a partir dos parâmetros abertos de conexão de árvore.
Create.UserDomainName
Uma cadeia de caracteres Unicode que contém o nome de domínio deste Nome de Usuário.
QueryDirectory
Um membro de estrutura de uma união sem nome usada para lidar com solicitações de IRP_MJ_DIRECTORY_CONTROL . Esse membro é usado para lidar com solicitações de diretório de consulta que resultam em chamadas para a rotina MrxQueryDirectory . O RDBSS passa informações no membro da estrutura QueryDirectory para o minidiretório de rede.
QueryDirectory.FileIndex
O Índice da entrada na qual iniciar a verificação do diretório se o membro IndexSpecified estiver definido como TRUE. Esse parâmetro é definido como o membro IrpSp-Parameters.QueryDirectory.FileIndex>.
QueryDirectory.RestartScan
Um valor booliano quando definido como TRUE indica que a verificação deve ser iniciada na primeira entrada no diretório. Quando esse valor é definido como FALSE, a verificação é retomada de uma chamada anterior. Esse parâmetro deve ser definido como TRUE ao chamar pela primeira vez. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o SL_RESTART_SCAN bit ativado.
QueryDirectory.ReturnSingleEntry
Um valor booliano definido como TRUE indica que apenas uma única entrada deve ser retornada. Se esse parâmetro for TRUE, MrxQueryDirectory deverá retornar apenas a primeira entrada encontrada. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_RETURN_SINGLE_ENTRY ativado.
QueryDirectory.IndexSpecified
Um valor booliano quando definido como TRUE indica para iniciar a verificação na entrada no diretório cujo índice é fornecido pelo membro FileIndex . Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_INDEX_SPECIFIED ativado.
QueryDirectory.InitialQuery
Um valor booliano definido como TRUE quando a consulta não é uma consulta cartão selvagem (".", por exemplo). Esse membro será definido como TRUE se o membro UnicodeQueryTemplate.Buffer do FOBX associado for NULL e o membro Flags do FOBX não tiver o FOBX_FLAG_MATCH_ALL bit ativado. Para uma consulta de cartão selvagem (".", por exemplo), o RDBSS definirá o membro UnicodeQueryTemplate.Buffer do FOBX associado como a consulta de cartão selvagem passada.
NotifyChangeDirectory
Um membro de estrutura de uma união sem nome usada para lidar com solicitações IRP_MJ_DIRECTORY_CONTROL com uma função secundária de IRP_MN_NOTIFY_CHANGE_DIRECTORY. Esse membro é usado para lidar com solicitações de alteração de diretório que resultam em chamadas para a rotina MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] . O RDBSS passa informações no membro da estrutura NotifyChangeDirectory e na estrutura pLowIoContext-ParamsFor.NotifyChangeDirectory> para o minidiretório de rede.
NotifyChangeDirectory.pVNetRoot
Um ponteiro para a estrutura V_NET_ROOT associada ao diretório. Esse parâmetro é definido como o membro IrpSp-FileObject-FsContext>> ou o membro IrpSp-FileObject-FsContext2>>, dependendo do tipo de nó.
QueryEa
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_QUERY_EA . Esse membro é usado para lidar com solicitações de consulta de atributo estendido que resultam em chamadas para a rotina MRxQueryEaInfo . O RDBSS passa informações no membro da estrutura QueryEa para o minidiretório de rede.
QueryEa.UserEaList
Um ponteiro para um buffer de entrada fornecido pelo chamador que contém uma estrutura FILE_GET_EA_INFORMATION especificando os atributos estendidos a serem consultados. Esse parâmetro é definido como IrpSp-Parameters.QueryEa.EaList>.
QueryEa.UserEaListLength
O comprimento, em bytes, do buffer apontado pelo membro UserEaList . Esse parâmetro é definido como IrpSp-Parameters.QueryEa.EaListLength>.
QueryEa.UserEaIndex
O Índice da entrada na qual começar a digitalizar a lista de atributos estendidos. Esse parâmetro deverá ser ignorado se o membro IndexSpecified não estiver definido como TRUE ou se o membro QueryEaList apontar para uma lista sem nenhum número. Esse parâmetro é definido como IrpSp-Parameters.QueryEa.EaIndex>.
QueryEa.RestartScan
Um valor booliano quando definido como TRUE indica que a consulta deve ser iniciada na primeira entrada de atributo estendido. Quando esse valor é definido como FALSE, a verificação é retomada de uma chamada anterior. Esse parâmetro deve ser definido como TRUE ao chamar pela primeira vez. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o SL_RESTART_SCAN bit ativado.
QueryEa.ReturnSingleEntry
Um valor booliano quando definido como TRUE indica que apenas uma única entrada deve ser retornada. Se esse parâmetro for TRUE, MrxQueryEaInfo deverá retornar apenas a primeira entrada encontrada. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_RETURN_SINGLE_ENTRY ativado.
QueryEa.IndexSpecified
Um valor booliano quando definido como TRUE indica para iniciar a verificação na entrada nos atributos estendidos cujo índice é fornecido pelo membro UserEaIndex . Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_INDEX_SPECIFIED ativado.
QuerySecurity
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_QUERY_SECURITY . Esse membro é usado para lidar com solicitações de segurança de consulta que resultam em chamadas para a rotina MRxQuerySdInfo . O RDBSS passa informações no membro da estrutura QuerySecurity para o minidiretório de rede.
QuerySecurity.SecurityInformation
Um ponteiro para um buffer de entrada fornecido pelo chamador que contém uma estrutura SECURITY_INFORMATION especificando a operação a ser consultada. Esse parâmetro é definido como IrpSp-Parameters.QuerySecurity.SecurityInformation>.
QuerySecurity.Length
O comprimento, em bytes, do buffer apontado pelo membro SecurityInformation . Esse parâmetro é definido como IrpSp-Parameters.QuerySecurity.Length>.
SetSecurity
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_SET_SECURITY . Esse membro é usado para lidar com solicitações de segurança de consulta que resultam em chamadas para a rotina MRxSetSdInfo . O RDBSS passa informações no membro da estrutura SetSecurity para o minidiretório de rede.
SetSecurity.SecurityInformation
Um ponteiro para um buffer de entrada fornecido pelo chamador que contém uma estrutura SECURITY_INFORMATION que especifica quais informações de segurança devem ser definidas no descritor de segurança. Esse parâmetro é definido como IrpSp-Parameters.SetSecurity.SecurityInformation>.
SetSecurity.SecurityDescriptor
Um ponteiro para uma estrutura SECURITY_DESCRIPTOR que contém os valores das informações de segurança a serem atribuídas ao objeto. Esse parâmetro é definido como IrpSp-Parameters.SetSecurity.SecurityDescriptor>.
QueryQuota
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_QUERY_QUOTA . Esse membro é usado para lidar com solicitações de segurança de consulta que resultam em chamadas para a rotina MRxQueryQuotaInfo . O RDBSS passa informações no membro da estrutura QueryQuota para o minidiretório de rede.
QueryQuota.Length
O comprimento, em bytes, do buffer apontado pelo membro StartSid . Esse parâmetro é definido como IrpSp-Parameters.QueryQuota.Length>.
QueryQuota.StartSid
Um ponteiro opcional para um SID que indica que as informações retornadas serão iniciadas com uma entrada diferente da primeira entrada. Esse parâmetro será ignorado se o membro SidList for especificado. Esse parâmetro é definido como IrpSp-Parameters.QueryQuota.StartSid>.
QueryQuota.SidList
Um ponteiro opcional para uma lista de SIDs cujas informações de cota devem ser retornadas. Cada entrada na lista é uma estrutura FILE_GET_QUOTA_INFORMATION. Esse parâmetro é definido como IrpSp-Parameters.QueryQuota.SidList>.
QueryQuota.SidListLength
O comprimento, em bytes, da lista de SIDs no membro SidList , se for especificado. Esse parâmetro é definido como IrpSp-Parameters.QueryQuota.SidListLength>.
QueryQuota.RestartScan
Um valor booliano quando definido como TRUE indica que a consulta deve ser iniciada na primeira entrada. Quando esse valor é definido como FALSE, a verificação é retomada de uma chamada anterior. Esse parâmetro deve ser definido como TRUE ao chamar pela primeira vez. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o SL_RESTART_SCAN bit ativado.
QueryQuota.ReturnSingleEntry
Um valor booliano quando definido como TRUE indica que apenas uma única entrada deve ser retornada. Se esse parâmetro for TRUE, MrxQueryQuotaInfo deverá retornar apenas a primeira entrada encontrada. Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_RETURN_SINGLE_ENTRY ativado.
QueryQuota.IndexSpecified
Um valor booliano quando definido como TRUE indica para iniciar a verificação na entrada na lista cujo índice é fornecido pelo membro StartSid . Esse parâmetro será definido como TRUE se IrpSp-Flags> tiver o bit SL_INDEX_SPECIFIED ativado.
SetQuota
Um membro de estrutura de um sindicato sem nome usado para lidar com solicitações de IRP_MJ_SET_QUOTA . Essa estrutura não é usada atualmente pelo RDBSS.
SetQuota.Length
Um membro não utilizado da estrutura SetQuota .
DosVolumeFunction
Um membro de estrutura de uma união sem nome. Essa estrutura não é usada atualmente pelo RDBSS.
DosVolumeFunction.VNetRoot
Um membro não utilizado da estrutura DosVolumeFunction .
DosVolumeFunction.SrvCall
Um membro não utilizado da estrutura DosVolumeFunction .
DosVolumeFunction.NetRoot
Um membro não utilizado da estrutura DosVolumeFunction .
FlagsForLowIo
LowIoContext
AlsoCanonicalNameBuffer
LoudCompletionString
Um membro não utilizado da estrutura RX_CONTEXT.
AcquireReleaseFcbTrackerX
TrackerHistoryPointer
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
ShadowCritOwner
StoredStatus
Um membro de um sindicato sem nome usado para retornar informações de status por um driver de minidiretório de rede para operações de E/S baixas. O RDBSS também define esse valor com base no status retornado pela rotina MRxQueryFileInfo quando a operação de consulta de arquivo não é compreendida pelo RDBSS.
StoredStatusAlignment
Um membro de uma união sem nome usada para forçar o alinhamento adequado no membro StoredStatus .
InformationToReturn
Um membro de um sindicato sem nome usado para retornar status informações por um driver de minidiretório de rede para algumas operações de E/S baixa (leitura, gravação, FSCTL etc.) e MrxQueryXXX.
O tipo de nó exclusivo usado para uma estrutura de RX_CONTEXT. Todos os principais tipos de estrutura (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB e FOBX, por exemplo) usados pelo RDBSS têm um código de tipo de nó de dois bytes exclusivo definido no arquivo de inclusão nodetype.h que pode ser usado para depuração. O RDBSS define esse membro como RDBSS_NTC_RX_CONTEXT quando um RX_CONTEXT é inicializado na rotina RxInitializeContext . Se um driver de minidiretório de rede inicializar uma estrutura RX_CONTEXT usando algum outro método, esse membro deverá ser definido.
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
FlagsForLowIo
Um conjunto de opções definido pelo RDBSS e passado para operações de E/S baixas enviadas para o minidiretório de rede. FlagsForLowIo é um membro da estrutura sem nome usada para solicitações de E/S baixas para o minidiretório de rede.
LowIoContext
Um ponteiro para uma estrutura de LOWIO_CONTEXT passada para o minidiretório de rede. LowIoContext é um membro da estrutura sem nome usada para solicitações de E/S baixas enviadas ao minidiretório de rede.
Comentários
A estrutura RX_CONTEXT é uma das estruturas de dados fundamentais usadas por RDBSS e minidiretórios de rede para gerenciar um IRP (pacote de solicitação de E/S). A estrutura de dados RX_CONTEXT encapsula um IRP para uso por RDBSS, minidiretórios de rede e o sistema de arquivos. Uma estrutura RX_CONTEXT inclui um ponteiro para um único IRP e todo o contexto necessário para processar o IRP.
Às vezes, uma estrutura RX_CONTEXT é conhecida como um contexto IRP ou RxContext nos arquivos de cabeçalho do Kit de Driver de Janela (WDK) ou ifs kit e outros recursos usados para desenvolver drivers de minidiretório de rede.
O RX_CONTEXT é uma estrutura de dados à qual informações adicionais fornecidas pelos vários minidiretórios de rede são anexadas. O RX_CONTEXT inclui campos para alocar o tamanho de cada estrutura RX_CONTEXT por um valor pré-especificado para cada minidiretório de rede, que é então reservado para uso pelo minidiretório. Essa abordagem consiste em alocar uma área pré-especificada, que é a mesma para todos os minidiretórios de rede como parte de cada RX_CONTEXT. Essa é uma área não formatadas na parte superior da qual qualquer estrutura desejada pode ser imposta pelos vários minidiretórios de rede. Os desenvolvedores de drivers de minidiretório de rede devem tentar definir o contexto privado associado para se ajustar a essa área pré-especificada definida na estrutura de dados RX_CONTEXT. Os drivers de minidiretório de rede que violam essa regra incorrerão em uma penalidade significativa de desempenho.
Muitas rotinas e rotinas rdbss exportadas por um minidiretório de rede fazem referência a estruturas de RX_CONTEXT no thread inicial ou em algum outro thread usado pela rotina. Assim, as estruturas de RX_CONTEXT alocadas são contadas para gerenciar seu uso para operações assíncronas. Quando a contagem de referência vai para zero, a estrutura de RX_CONTEXT alocada pode ser finalizada e liberada na última operação de desreferência.
O RDBSS fornece várias rotinas usadas para manipular um RX_CONTEXT e o IRP associado. Essas rotinas são usadas para alocar, inicializar e excluir um RX_CONTEXT. Essas rotinas também são usadas para concluir o IRP associado a um RX_CONTEXT e configurar uma rotina de cancelamento para um RX_CONTEXT.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | rxcontx.h (inclua Rx.h, Rxcontx.h) |