Função IoUnregisterPlugPlayNotificationEx (wdm.h)
A rotina IoUnregisterPlugPlayNotificationEx cancela o registro da rotina de retorno de chamada de um driver para notificações de eventos de Plug and Play (PnP).
Sintaxe
NTSTATUS IoUnregisterPlugPlayNotificationEx(
[in] PVOID NotificationEntry
);
Parâmetros
[in] NotificationEntry
Um ponteiro para um valor opaco que representa o registro a ser cancelado. O chamador obteve esse valor anteriormente chamando a rotina IoRegisterPlugPlayNotification .
Retornar valor
IoUnregisterPlugPlayNotificationEx retornará STATUS_SUCCESS se o parâmetro NotificationEntry for válido.
Comentários
Um driver de modo kernel chama essa rotina para remover um registro para receber notificações PnP. Ou seja, uma chamada IoUnregisterPlugPlayNotificationEx cancela o registro de uma rotina de retorno de chamada de driver para uma categoria de evento PnP. O driver obteve esse registro anteriormente chamando a rotina IoRegisterPlugPlayNotification .
Depois que uma chamada IoUnregisterPlugPlayNotificationEx retorna, o registro especificado é cancelado e nenhum retorno de chamada adicional pode ocorrer.
A rotina IoUnregisterPlugPlayNotification é semelhante a IoUnregisterPlugPlayNotificationEx, exceto que não pode garantir que nenhum retorno de chamada adicional possa ocorrer depois que uma chamada IoUnregisterPlugPlayNotification retornar.
Frequentemente, um driver chama IoUnregisterPlugPlayNotificationEx de uma rotina de retorno de chamada de notificação. Na maioria dos casos, o driver pode excluir com segurança o registro da rotina de retorno de chamada de notificação dessa maneira. No entanto, não é seguro para uma rotina de retorno de chamada de notificação chamar IoUnregisterPlugPlayNotificationEx para cancelar o registro em si se os dois itens a seguir forem verdadeiros:
O driver define o sinalizador PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES no valor do parâmetro EventCategoryFlags fornecido para a chamada IoRegisterPlugPlayNotification que registra a rotina de retorno de chamada de notificação.
A chamada IoRegisterPlugPlayNotification que registra a rotina de retorno de chamada de notificação ainda não foi retornada.
A rotina de retorno de chamada não deve chamar nenhuma rotina que possa bloquear a execução do thread no qual a rotina de retorno de chamada está em execução. Por exemplo, se uma rotina de retorno de chamada mal projetada colocar um item de trabalho que chama IoUnregisterPlugPlayNotificationEx na fila de itens de trabalho e aguardar um thread de trabalho concluir o item de trabalho, isso resultará em um deadlock do sistema operacional.
Os drivers devem cancelar o registro de uma rotina de retorno de chamada de notificação primeiro e, em seguida, liberar qualquer buffer de contexto associado à rotina.
Um driver não pode ser descarregado até remover todos os registros de notificação PnP porque cada registro ativo contém uma referência contada ao objeto de driver que representa a imagem carregada do driver.
Para obter mais informações, consulte Usando a notificação PnP.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 7. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |