Função ZwGetNotificationResourceManager (wdm.h)

A rotina ZwGetNotificationResourceManager recupera a próxima notificação de transação da fila de notificação de um gerenciador de recursos especificado.

Sintaxe

NTSYSCALLAPI NTSTATUS ZwGetNotificationResourceManager(
  [in]            HANDLE                    ResourceManagerHandle,
  [out]           PTRANSACTION_NOTIFICATION TransactionNotification,
  [in]            ULONG                     NotificationLength,
  [in]            PLARGE_INTEGER            Timeout,
  [out, optional] PULONG                    ReturnLength,
  [in]            ULONG                     Asynchronous,
  [in, optional]  ULONG_PTR                 AsynchronousContext
);

Parâmetros

[in] ResourceManagerHandle

Um identificador para um objeto do gerenciador de recursos que foi obtido por uma chamada anterior para ZwCreateResourceManager ou ZwOpenResourceManager. O identificador deve ter acesso RESOURCEMANAGER_GET_NOTIFICATION ao objeto .

[out] TransactionNotification

Um ponteiro para um buffer alocado pelo chamador que recebe informações sobre a notificação recuperada. O buffer deve ser grande o suficiente para conter uma estrutura de TRANSACTION_NOTIFICATION mais argumentos específicos de notificação adicionais.

[in] NotificationLength

O comprimento, em bytes, do buffer para o qual o parâmetro TransactionNotification aponta.

[in] Timeout

Um ponteiro para um valor que especifica um tempo relativo ou absoluto, em unidades de 100 nanossegundos. Esse ponteiro é opcional e pode ser NULL.

Se o ponteiro for NULL, ZwGetNotificationResourceManager não retornará até que uma notificação de transação esteja disponível. Se um valor de tempo for especificado, ZwGetNotificationResourceManager retornará quando uma notificação estiver disponível ou após o tempo especificado passar, o que vier primeiro.

Um valor negativo especifica um tempo relativo à hora atual do sistema. Por exemplo, um valor de tempo relativo de cinco segundos faz com que ZwGetNotificationResourceManager tenha um tempo limite de cinco segundos depois de ser chamado.

Um valor positivo especifica uma hora absoluta, que na verdade é relativa a 00:00, 1º de janeiro de 1601. Se um valor de tempo absoluto for especificado, o sistema operacional adicionará o valor de tempo absoluto ao valor de hora que representa 00:00, 1º de janeiro de 1601.

Se o chamador especificar um valor zero (em vez de um ponteiro NULL ), ZwGetNotificationResourceManager retornará imediatamente, quer uma notificação esteja disponível ou não.

[out, optional] ReturnLength

Um ponteiro opcional para uma variável. Se esse ponteiro não for NULL e o valor do parâmetro NotificationLength for muito pequeno, ZwGetNotificationResourceManager fornecerá o comprimento necessário na variável e retornará STATUS_BUFFER_TOO_SMALL.

[in] Asynchronous

Um valor ULONG que deve ser zero. ZwGetNotificationResourceManager não dá suporte a notificações assíncronas. Use TmEnableCallbacks para habilitar notificações assíncronas.

[in, optional] AsynchronousContext

Um ponteiro para um valor ULONG. Esse ponteiro deve ser NULL.

Retornar valor

ZwGetNotificationResourceManager retornará STATUS_SUCCESS se a operação for bem-sucedida e uma notificação estiver disponível. Caso contrário, essa rotina pode retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_TIMEOUT
O intervalo de tempo limite que o Tempo limite especifica decorrido antes de uma notificação ficar disponível.
STATUS_OBJECT_TYPE_MISMATCH
O identificador especificado não é um identificador para um objeto do gerenciador de recursos.
STATUS_INVALID_HANDLE
O identificador do objeto é inválido.
STATUS_ACCESS_DENIED
O chamador não tem acesso apropriado ao objeto do gerenciador de recursos.
STATUS_BUFFER_TOO_SMALL
O valor do parâmetro NotificationLength é muito pequeno.
 

A rotina pode retornar outros valores NTSTATUS.

Comentários

Use a rotina ZwGetNotificationResourceManager para obter notificações de forma síncrona. Use a rotina TmEnableCallbacks para habilitar notificações assíncronas.

A estrutura de TRANSACTION_NOTIFICATION recebida contém a chave de inscrição que o gerenciador de recursos especificou quando chamou ZwCreateEnlistment. Você pode usar a chave de inscrição para identificar o alistamento ao qual a notificação se aplica.

Para obter mais informações sobre a rotina ZwGetNotificationResourceManager, consulte Criando um Resource Manager.

NtGetNotificationResourceManager e ZwGetNotificationResourceManager são duas versões da mesma rotina dos Serviços do Sistema Nativo do Windows.

Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores do sistema operacional.
Plataforma de Destino Universal
Cabeçalho wdm.h (inclua Wdm.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
Regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Confira também

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager