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)

Confira também

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr