Compartilhar via


Função IoReportTargetDeviceChange (wdm.h)

A rotina de IoReportTargetDeviceChange notifica o gerenciador PnP de que ocorreu um evento personalizado em um dispositivo.

Sintaxe

NTSTATUS IoReportTargetDeviceChange(
  [in] PDEVICE_OBJECT PhysicalDeviceObject,
  [in] PVOID          NotificationStructure
);

Parâmetros

[in] PhysicalDeviceObject

Ponteiro para o PDO do dispositivo que está sendo relatado.

[in] NotificationStructure

Ponteiro para uma estrutura de TARGET_DEVICE_CUSTOM_NOTIFICATION fornecida pelo chamador que descreve o evento personalizado. O gerenciador PnP envia essa estrutura para drivers registrados para notificação do evento.

notificationStructure. FileObject deve ser NULL. notificationStructure. de evento deve conter o GUID personalizado para o evento. Os outros campos do NotificationStructure devem ser preenchidos conforme apropriado para o evento personalizado.

O gerenciador PnP preenche o NotificationStructure.campo FileObject ao enviar notificações aos inscritos.

Valor de retorno

IoReportTargetDeviceChange retorna STATUS_SUCCESS ou um status de erro apropriado. Os possíveis valores de status de erro incluem o seguinte.

Código de retorno Descrição
STATUS_INVALID_DEVICE_REQUEST
O chamador especificou um evento PnP do sistema, como GUID_TARGET_DEVICE_QUERY_REMOVE. Essa rotina é apenas para eventos personalizados.

Observações

Após IoReportTargetDeviceChange notificar o gerenciador PnP de que ocorreu um evento personalizado em um dispositivo, o gerenciador PnP envia a notificação do evento para drivers registrados para notificação no dispositivo. Não use essa rotina para relatar eventos PnP do sistema, como GUID_TARGET_DEVICE_REMOVE_COMPLETE.

Um driver que define chamadas de evento de dispositivo personalizado IoReportTargetDeviceChange para informar ao gerenciador PnP que o evento personalizado ocorreu. A notificação personalizada pode ser usada para eventos como uma alteração de rótulo de volume.

Um driver deve chamar a forma assíncrona dessa rotina, IoReportTargetDeviceChangeAsynchronous, em vez dessa rotina, para evitar deadlocks.

Determinados componentes do modo kernel podem chamar essa rotina síncrona. Por exemplo, um sistema de arquivos pode chamar IoReportTargetDeviceChange para relatar um evento personalizado "sair do volume" quando um componente tenta abrir o volume para acesso exclusivo. Os clientes que se registram para notificação em volumes do sistema de arquivos têm o cuidado de não solicitar uma abertura exclusiva em uma rotina de retorno de chamada de notificação PnP.

A estrutura de notificação personalizada contém um evento definido pelo driver com seu próprio GUID. Os gravadores de driver podem gerar GUIDs com Uuidgen.exe ou Guidgen.exe (que estão incluídos no SDK do Microsoft Windows).

Os chamadores de IoReportTargetDeviceChange devem estar em execução no IRQL = PASSIVE_LEVEL no contexto de um thread do sistema. Para relatar uma alteração de dispositivo de destino de > PASSIVE_LEVEL IRQL, chame IoReportTargetDeviceChangeAsynchronous .

IoReportTargetDeviceChange não tem suporte no Windows 98/Me; retorna STATUS_NOT_IMPLEMENTED.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível a partir do Windows 2000.
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 (consulte a seção Comentários)
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION