Compartilhar via


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 RDBSS_NTC_RX_CONTEXT quando um RX_CONTEXT é inicializado noRxInitializeContext . Se um driver de minidiretório de rede inicializar uma estrutura de 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.

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:

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 . Se um driver de minidiretor 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 de RxInitializeContext . Se um driver de minidiretor 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 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 deve verificar 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 de RxInitializeContext . Esse membro é copiado do membro FileObject->DeviceObject da pilha IRP. O objeto de dispositivo do minidiretório de rede também é armazenado no membro da estrutura RxDeviceObject .

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 . A estrutura de RxDeviceObject inclui um membro DeviceObject que contém o objeto do 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 de 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, 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 . Esse membro não é usado de outra forma pelo RDBSS, mas pode ser usado por minidiretórios de rede.

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 . Se um driver de minidiretor 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.

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 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 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 para o minidiretório de rede e o minidiretório de rede retorna informações ao RDBSS no membro da estrutura informações 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 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 minidiretor 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 minidiretor de rede pelo RDBSS. O membro do do Buffer é usado noMrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup e rotinas de MrxSetVolumeInfo.

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 é usado no mrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfoMrxSetFileInfo, MRxSetFileInfoAtCleanup e rotinas de MrxSetVolumeInfo.

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 LengthRemaining é usado no MrxQueryDirectory, mrxQueryFileInfo, MrxQueryVolumeInfo, mrxSetFileInfo, MRxSetFileInfoAtCleanupe rotinas de 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 de mrxSetFileInfo .

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 para o minidiretório de rede e o minidiretório de rede retorna informações ao 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 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 . 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 ao RDBSS no membro da estrutura Criar .

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 NtCreateParameters com base nos Parameters.Create membros do IRP.

Create.ReturnedCreateInformation

Um valor definido pelo minidiretório de rede após a conclusão da chamada de 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, 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 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 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 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 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 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 o rotina de 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 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 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 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 para o minidiretório de rede.

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 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 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 . Esse parâmetro será definido como TRUE se sinalizadores IrpSp-> 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 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.

DosVolumeFunction.SrvCall

Um membro não utilizado da estrutura de DosVolumeFunction.

DosVolumeFunction.NetRoot

Um membro não utilizado da estrutura de DosVolumeFunction.

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

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