Ler em inglês

Compartilhar via


Manipulando um evento de GUID_TARGET_DEVICE_QUERY_REMOVE

Antes que o gerenciador de PnP envie um IRP IRP_MN_QUERY_REMOVE_DEVICE para os drivers de um dispositivo, ele chama todas as rotinas de retorno de chamada de notificação registradas para EventCategoryTargetDeviceChange no dispositivo. O gerenciador PnP especifica uma NotificationStructure. Evento de GUID_TARGET_DEVICE_QUERY_REMOVE.

Em resposta a essa notificação, a rotina de retorno de chamada determina se o dispositivo pode ser removido sem interromper o sistema.

Se o dispositivo não deve ser removido, a rotina de retorno de chamada retorna STATUS_UNSUCCESSFUL. Em resposta a esse status, o gerenciador de PnP anula o processamento de remoção de consulta e o dispositivo não será removido.

Se o dispositivo puder ser removido, a rotina de retorno de chamada deverá executar quaisquer operações apropriadas para se preparar para a remoção do dispositivo, como fechar todos os identificadores abertos no dispositivo (se possível). Se os identificadores permanecerem abertos no dispositivo, o gerenciador PnP não poderá remover o dispositivo e o gerenciador PnP anulará o processamento de remoção de consulta.

Ao lidar com êxito com um evento de GUID_TARGET_DEVICE_QUERY_REMOVE, uma rotina de retorno de chamada de notificação deve:

  • Feche todos os identificadores abertos para o dispositivo.

  • Se o driver tiver uma referência pendente no objeto de arquivo, desreferenciar o objeto de arquivo.

  • Permaneça registrado para futuras notificações eventCategoryTargetDeviceChange . Isso é importante porque a operação de remoção iminente pode ser cancelada.

Fechar um identificador para um dispositivo não cancela o registro de um driver para a notificação de alteração de dispositivo de destino PnP. O gerenciador PnP ainda pode chamar a rotina de retorno de chamada de notificação do driver, mas em tais chamadas o objeto de arquivo na NotificationStructure não é válido.