estrutura RX_CONTEXT (rxcontx.h)
A estrutura RX_CONTEXT encapsula um IRP para uso por RDBSS, minidiretórios de rede e pelo sistema de arquivos. Ele descreve um IRP enquanto está sendo processado por um minidiretório de rede e contém informações de estado que permitem que os 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. O RDBSS define esse membro como
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
Todos os principais tipos de estrutura usados pelo RDBSS têm um código de tipo de nó de dois bytes exclusivo definido em nodetype.h que podem ser usados para depuração. Esses tipos de estrutura principais incluem o seguinte:
- RX_CONTEXT
- SRV_CALL
- NET_ROOT
- V_NET_ROOT
- SRV_OPEN
- fcb
- FOBX
NodeByteSize
O tamanho, em bytes, dessa estrutura. O RDBSS define esse membro como sizeof( RX_CONTEXT) quando um RX_CONTEXT é inicializado na rotina de RxInitializeContext
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 de RxInitializeContext
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 do IRP encapsulada por este RX_CONTEXT.
MinorFunction
A função secundária do IRP encapsulada por este RX_CONTEXT.
PendingReturned
Se definido como TRUE, isso especifica que o RDBSS ou um driver marcou o IRP pendente. Cada rotina de IoCompletion
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 de RxInitializeContext
O membro do 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 este IRP.
pFobx
Um ponteiro para a extensão de objeto de arquivo associado (FOBX) para este IRP.
pRelevantSrvOpen
Um ponteiro para o servidor associado abrir(SRV_OPEN) para este IRP.
NonPagedFcb
Um ponteiro para o FCB (bloco de controle de arquivo não paginado) associado para este 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 de RxInitializeContext
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 de RxInitializeContext
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, este membro especifica que o recurso FCB foi adquirido para esta operação. O recurso FCB é um dos mecanismos de bloqueio associados a uma operação em uma FCB.
FcbPagingIoResourceAcquired
Se definido como TRUE, este 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 uma FCB.
MustSucceedDescriptorNumber
Um membro inicialmente definido como zero na rotina de RxCreateRxContext
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 pelo rotina de MRxQueryFileInfo quando a operação de consulta de arquivo não é compreendida pelo RDBSS.
StoredStatusAlignment
Um membro de um sindicato sem nome usado para forçar o alinhamento adequado no membro storedStatus
InformationToReturn
Um membro de um sindicato sem nome usado para retornar informações de status por um driver de minidiretório de rede para algumas operações de E/S de baixa E/S (leitura, gravação, FSCTL etc.) e operações de 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 nodetype.h incluir arquivo que pode ser usado para depuração. O RDBSS define esse membro como RDBSS_NTC_RX_CONTEXT quando um RX_CONTEXT é inicializado na rotina de RxInitializeContext
O RDBSS define esse membro como parte de um cabeçalho padrão para todas as estruturas usadas pelo RDBSS.
IoStatusBlock
O bloco de status de E/S é usado por um minidiretório de rede para retornar informações de status. O membro IoStatusBlock é membro de um sindicato sem nome usado para retornar informações de status.
ForceLonglongAligmentDummyField
Um membro de um sindicato sem nome usado para forçar o alinhamento adequado no
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 chefe de operações da lista que será liberado 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 liberadas 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 arquivo-objeto. Esse membro é reservado para uso interno.
Info
Um membro de estrutura de um sindicato sem nome usado para as seguintes rotinas:
- MRxQueryDirectory
- MRxQueryFileInfo
- MRxQueryVolumeInfo
- MRxSetFileInfo
- MRxSetFileInfoAtCleanup
- MRxSetVolumeInfo
O RDBSS passa informações no membro da estrutura do
Info.FsInformationClass
Um membro de uma união sem nome usada pelo RDBSS para passar o tipo de FS_INFORMATION_CLASS que é solicitado ao driver de minidiretório de rede. O RDBSS passa informações no membro do
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 minidiretor de rede. O RDBSS passa informações no membro
Info.Buffer
Um buffer usado para passar dados do RDBSS para o driver de minidiretório de rede e receber respostas do driver de minidiretor de rede pelo RDBSS. O membro do do Buffer
Info.Length
Um membro de um sindicato sem nome usado para passar o comprimento do buffer membro do RDBSS para o driver de minidiretório de rede. O membro de Comprimento
Info.LengthRemaining
Um membro de um sindicato sem nome usado para passar o comprimento das informações retornadas no buffer membro do driver de minidiretor de rede para o RDBSS. O
Info.ReplaceIfExists
Um valor booliano que indica se um arquivo existente deve ser substituído durante uma operação de renomeação. O membro
Info.AdvanceOnly
Esse membro é reservado para uso interno.
PrefixClaim
Um membro de estrutura de um sindicato sem nome usado 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
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 Create.NtCreateParameters.SecurityContext membro do RX_CONTEXT, não neste membro.
Create
Um membro da 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 de MRxCreate
Create.NtCreateParameters
Os parâmetros de criação passados para o modo de usuário rotina de NtCreatefile. O RDBSS define os membros da estrutura de
Create.ReturnedCreateInformation
Um valor definido pelo minidiretório de rede após a conclusão da chamada de
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, do EaBuffer.
Create.SdLength
O comprimento do descritor de segurança. O RDBSS define isso com base no valor do Parameters.Create.SecurityContext membro do IRP. Se o membro do
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 de 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 membro.
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 usado 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 UserName.
QueryDirectory
Um membro de estrutura de um sindicato sem nome usado 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 o rotina de MrxQueryDirectory. O RDBSS passa informações no membro da estrutura
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
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 sinalizadores IrpSp-> tiver o bit SL_RESTART_SCAN 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 sinalizadores IrpSp-> 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 sinalizadores IrpSp-> tiver o bit SL_INDEX_SPECIFIED ativado.
QueryDirectory.InitialQuery
Um valor booliano definido como TRUE quando a consulta não é uma consulta curinga (".", por exemplo). Esse membro será definido como TRUE se o membro UnicodeQueryTemplate.Buffer do FOBX associado for NULL e o Flags membro do FOBX não tiver o FOBX_FLAG_MATCH_ALL bit ativado. Para uma consulta curinga (".", por exemplo), o RDBSS definirá o membro UnicodeQueryTemplate.Buffer do FOBX associado para a consulta curinga passada.
NotifyChangeDirectory
Um membro de estrutura de um sindicato sem nome usado 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 o rotina de 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
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 o rotina de MRxQueryEaInfo. O RDBSS passa informações no membro da estrutura
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 por userealist membro. Esse parâmetro é definido como >IrpSp-Parameters.QueryEa.EaListLength.
QueryEa.UserEaIndex
O Índice da entrada na qual iniciar a verificação da lista de atributo estendido. Esse parâmetro deverá ser ignorado se o membro IndexSpecified não estiver definido como TRUE ou se queryEaList membro apontar para uma lista não úmida. 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 estendida. 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 os sinalizadores irpSp-> tiverem o bit SL_RESTART_SCAN 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 sinalizadores IrpSp-> tiver o bit SL_RETURN_SINGLE_ENTRY ativado.
QueryEa.IndexSpecified
Um valor booliano quando definido como TRUE indica iniciar a verificação na entrada nos atributos estendidos cujo índice é fornecido pelo membro UserEaIndex. Esse parâmetro será definido como TRUE se sinalizadores IrpSp-> 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 o rotina de MRxQuerySdInfo. O RDBSS passa informações no membro da estrutura
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 por membro SecurityInformation. Esse parâmetro é definido como >IrpSp-Parameters.QuerySecurity.Length.
SetSecurity
Um membro da 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 o rotina de MRxSetSdInfo. O RDBSS passa informações no membro da estrutura
SetSecurity.SecurityInformation
Um ponteiro para um buffer de entrada fornecido pelo chamador que contém uma estrutura de 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 de
QueryQuota.Length
O comprimento, em bytes, do buffer apontado por membro do 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 sinalizadores IrpSp->tiver o bit SL_RESTART_SCAN 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 sinalizadores IrpSp-> tiver o bit SL_RETURN_SINGLE_ENTRY ativado.
QueryQuota.IndexSpecified
Um valor booliano quando definido como TRUE indica iniciar a verificação na entrada da lista cujo índice é fornecido pelo membro startSid do
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
DosVolumeFunction
Um membro da estrutura de uma união sem nome. Essa estrutura não é usada atualmente pelo RDBSS.
DosVolumeFunction.VNetRoot
Um membro não utilizado da estrutura de
DosVolumeFunction.SrvCall
Um membro não utilizado da estrutura de
DosVolumeFunction.NetRoot
Um membro não utilizado da estrutura de
FlagsForLowIo
Um conjunto de RX_CONTENT_CREATE_FLAGS definido pelo RDBSS e passado para operações de E/S baixas enviadas para o minidiretório de rede. FlagsForLowIo é membro de uma 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.
AlsoCanonicalNameBuffer
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.
LoudCompletionString
Um membro não utilizado da estrutura RX_CONTEXT.
AcquireReleaseFcbTrackerX
Reservado para uso do sistema.
TrackerHistoryPointer
Reservado para uso do sistema.
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
Reservado para uso do sistema.
ShadowCritOwner
Reservado para uso do sistema.
Observações
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). Ele encapsula um IRP para uso pelo RDBSS, minidiretórios de rede e pelo sistema de arquivos. Uma estrutura de RX_CONTEXT inclui um ponteiro para um único IRP e todo o contexto necessário para processar o IRP.
Uma estrutura de RX_CONTEXT às vezes é conhecida como um Contexto IRP ou RxContext nos arquivos de cabeçalho do WDK 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 formatado na parte superior da qual qualquer estrutura desejada pode ser imposta pelos vários minidiretórios de rede. Os desenvolvedores de drivers de minidiretor de rede devem tentar definir o contexto privado associado para se ajustarem a essa área pré-especificada definida na estrutura de dados RX_CONTEXT. Os drivers de minidiretor de rede que violarem essa regra incorrerão em uma penalidade de desempenho significativa.
Muitas rotinas e rotinas rdbss exportadas por um minidiretório de rede fazem referência a estruturas de RX_CONTEXT no thread de início 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 for zero, a estrutura de RX_CONTEXT alocada poderá ser finalizada e liberada na última operação de desreferência.
O RDBSS fornece uma série de rotinas que são 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 (include Rx.h, Rxcontx.h) |
Consulte também
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
RxCreateRxContext
RxStartMinirdr