Compartilhar via


Função RtlRunOnceBeginInitialize (ntddk.h)

A rotina RtlRunOnceBeginInitialize inicia uma inicialização única.

Sintaxe

NTSYSAPI NTSTATUS RtlRunOnceBeginInitialize(
  [in, out] PRTL_RUN_ONCE RunOnce,
  [in]      ULONG         Flags,
  [out]     PVOID         *Context
);

Parâmetros

[in, out] RunOnce

Ponteiro para o RTL_RUN_ONCE estrutura de inicialização única.

[in] Flags

Opcionalmente, os drivers podem especificar um ou mais dos seguintes sinalizadores:

RTL_RUN_ONCE_ASYNC

Execute a inicialização de forma assíncrona. O driver pode executar várias tentativas de conclusão em paralelo. Se esse sinalizador for usado, as chamadas subsequentes para essa rotina falharão, a menos que esse sinalizador também seja especificado.

RTL_RUN_ONCE_CHECK_ONLY

Não inicie a inicialização, mas marcar para determinar se a inicialização já ocorreu. Se RtlRunOnceBeginInitialize retornar STATUS_SUCCESS, a inicialização terá êxito e *Context conterá os dados inicializados.

[out] Context

Especifica um ponteiro para uma variável PVOID que recebe os dados inicializados. O valor de *Context é válido somente quando a rotina retorna STATUS_SUCCESS.

Retornar valor

RtlRunOnceBeginInitialize retorna um dos seguintes valores NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS
A inicialização única já foi concluída. Os dados inicializados são armazenados no local de memória para o qual o Contexto aponta.
STATUS_PENDING
O chamador iniciou com êxito a inicialização única. O chamador agora executa as etapas de inicialização específicas do driver e, em seguida, chama RtlRunOnceComplete para concluir a inicialização.

Comentários

Como alternativa, os drivers podem executar a inicialização única chamando RtlRunOnceExecuteOnce e fornecendo uma rotina RunOnceInitialization .

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores do Windows.
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Confira também

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization