Partilhar via


Função IoRegisterLastChanceShutdownNotification (wdm.h)

A rotina IoRegisterLastChanceShutdownNotification registra um driver para receber um IRP IRP_MJ_SHUTDOWN quando o sistema é desligado, depois que todos os sistemas de arquivos são liberados.

Sintaxe

NTSTATUS IoRegisterLastChanceShutdownNotification(
  [in] PDEVICE_OBJECT DeviceObject
);

Parâmetros

[in] DeviceObject

Ponteiro para o objeto do dispositivo para o qual o driver solicita notificação de desligamento. O sistema passa esse ponteiro para a rotina de dispatchShutdown do driver.

Valor de retorno

IoRegisterLastChanceShutdownNotification retorna STATUS_SUCCESS com êxito ou o código de erro NTSTATUS apropriado sobre falha.

Observações

A rotina de IoRegisterLastChanceShutdownNotification registra o driver para receber um IRP IRP_MJ_SHUTDOWN para o dispositivo especificado quando o sistema é desligado. O driver recebe um desses IRP para cada dispositivo para o qual ele se registra para receber notificação. Os motoristas lidam com IRP_MJ_SHUTDOWN IRPs em suas rotinas de DispatchShutdown.

Para qualquer dispositivo registrado com essa rotina, o sistema envia o IRP IRP_MJ_SHUTDOWN depois que todos os sistemas de arquivos são liberados. Apenas um driver em uma pilha de dispositivos deve se registrar para receber notificação de desligamento, chamando IoRegisterShutdownNotification ou IoRegisterLastChanceShutdownNotification.

Se o driver deixar de exigir notificação de desligamento para esse dispositivo, use IoUnregisterShutdownNotification para remover o driver da fila de notificação de desligamento.

Um driver que chama IoRegisterLastChanceShutdownNotification deve atender às seguintes restrições em sua rotina de DispatchShutdown:

  • A rotina de DispatchShutdown não deve chamar rotinas pagináveis.
  • A rotina de dispatchShutdown não deve acessar a memória paginável.
  • A rotina de dispatchShutdown não deve executar nenhuma operação de E/S de arquivo.
A maioria dos drivers que exigem notificação de desligamento deve chamar a rotina de IoRegisterShutdownNotification, que não impõe essas limitações à rotina de DispatchShutdown e faz com que a rotina DispatchShutdown seja chamada antes que os sistemas de arquivos sejam liberados. Somente os drivers que devem fazer alguma limpeza depois que os sistemas de arquivos são liberados, como um driver para um dispositivo de armazenamento em massa, devem usar IoRegisterLastChanceShutdownNotification.

A rotina de DispatchShutdown registrada é chamada antes que o power manager envie uma solicitação IRP_MN_SET_POWER para PowerSystemShutdown. A rotina de DispatchShutdown não é chamada para transições para outros estados de energia.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows 2000 e versões posteriores do Windows. Não disponível no Microsoft Windows 98/Me.
da Plataforma de Destino Universal
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification