Função RxDriverEntry (rxprocs.h)
RxDriverEntry é chamado por um driver de minidiretório de rede monolítico de sua rotina DriverEntry para inicializar a biblioteca estática do RDBSS.
Para drivers não monolíticos, essa rotina de inicialização é equivalente à rotina
Sintaxe
NTSTATUS RxDriverEntry(
[in] IN PDRIVER_OBJECT DriverObject,
[in] IN PUNICODE_STRING RegistryPath
);
Parâmetros
[in] DriverObject
Um ponteiro para o objeto driver do driver de minidiretório de rede. Cada driver recebe um ponteiro para seu objeto de driver em um parâmetro para sua rotina de
[in] RegistryPath
Um ponteiro para uma cadeia de caracteres Unicode que contém o caminho do Registro para onde os parâmetros de driver e outros dados de configuração são armazenados. Esse caminho do Registro normalmente está localizado em uma entrada de serviços para o minidiretório de rede específico localizado sob a chave de
Valor de retorno
RxDriverEntry retorna STATUS_SUCCESS com êxito ou um dos seguintes valores de erro em caso de falha:
Código de retorno | Descrição |
---|---|
RXINIT_START | A inicialização do RDBSS foi iniciada, mas ocorreu um erro. Esse código de erro é uma enumeração RDBSS interna com um valor de 5. |
Observações
Um driver de minidiretório de rede monolítico que está vinculado estaticamente ao RDBSSLIB. O LIB deve chamar
Depois de chamar
Se a chamada RxDriverEntry for bem-sucedida, estruturas de dados rdbbs globais internas serão inicializadas. Vários spinlocks e mutexes são criados para proteger essas estruturas de dados. Uma dessas estruturas de dados é a estrutura RDBSS_DATA que é a estrutura superior na estrutura de dados de memória RDBSS. O parâmetro
RxDriverEntry também tentará abrir a chave do registro HKLM\System\CurrentControlSet\Services\LanmanWorkStation\Parameters.
Se essa chave puder ser aberta, será feita uma tentativa de ler alguns valores sob essa chave, dependendo da versão do sistema operacional.
No Windows XP e posterior,
Esse valor é um DWORD que é tratado como um booliano e armazenado como o valor booliano para DisableByteRangeLockingOnReadOnlyFiles, uma variável RDBSS para lidar com o bloqueio de intervalo de bytes em arquivos somente leitura. Essa variável afeta como o RDBSS lida com uma nova solicitação SRV_OPEN pelo minidiretório de rede em um FCB e decide se ela pode ser recolhida em um SRV_OPEN existente se os atributos forem compatíveis. Se um driver de minidiretório de rede quiser alterar esse comportamento, o driver deverá definir o valor de DisableByteRangeLockingOnReadOnlyFiles para o valor apropriado depois que o RxDriverEntry rotina tiver retornado. O RDBSSLIB. A biblioteca estática LIB expõe DisableByteRangeLockingOnReadOnlyFiles como uma variável externa.
No Windows 2000 e no Windows XP,
Esse valor é um DWORD que é tratado como um número e armazenado como o valor de uma opção RDBSS interna no número de páginas PAGE_SIZE para leitura antecipada usada pelo Gerenciador de Cache. Qualquer valor do Registro maior que 16 é tratado como se esse valor fosse limitado a 16 (o valor máximo atualmente permitido). Essa opção interna é armazenada como o número de páginas vezes que o PAGE_SIZE no processador (um máximo de 0x10000 ou 64K para um PAGE_SIZE de 4K, por exemplo). No Windows 2000 e no Windows XP, o RDBSS chama CcSetReadAheadGranularity com essa opção para várias operações de criação, leitura e gravação. Se um driver de minidiretor de rede quiser alterar esse comportamento, o driver deverá definir o valor de ReadAheadGranularity como o valor apropriado após a RxDriverEntry rotina tiver retornado. O RDBSSLIB. A biblioteca estática LIB expõe ReadAheadGranularity como uma variável externa.
Em sistemas X86, 64K é a maior gravação que será emitida pelo Gerenciador de Memória ao emitir uma gravação de paginação (as liberações do cache serão gravações de paginação por meio do Gerenciador de Memória). Para sistemas de arquivos remotos, 64K não é a melhor opção. A maioria dos dados que podem ser transferidos em uma única solicitação de rede TDI seria menor que 64K devido à sobrecarga de informações de protocolo.
No Windows Server 2003, um valor do Registro para definir ReadAheadGranularity não é exposto e o RDBSS usa como padrão 32K (8 páginas de PAGE_SIZE 4K). Esse é o mesmo valor padrão adotado para sistemas de arquivos locais.
RxDriverEntry recupera um ponteiro para o processo de kernel em execução chamando PsGetCurrentProcess e armazena esse valor em uma estrutura de dados RDBSS interna. Esse processo de kernel às vezes é chamado de processo do sistema de arquivos.
Para um driver de minidiretório de rede não monolítico (o redirecionador do Microsoft SMB), o driver de dispositivo RDBSS.SYS é inicializado em sua própria rotina de
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino |
Área de trabalho |
cabeçalho | rxprocs.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |
Consulte também
RxSetDomainForMailslotBroadcast
RxStartMinirdr