Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die funktion CM_Register_Notification registriert eine Anwendungsrückrufroutine, die aufgerufen werden soll, wenn ein PnP-Ereignis des angegebenen Typs auftritt.
Verwenden Sie RegisterDeviceNotification anstelle von CM_Register_Notification , wenn Ihr Code auf Windows 7 oder frühere Versionen von Windows abzielt. Aufrufer im Kernelmodus sollten stattdessen IoRegisterPlugPlayNotification verwenden.
Syntax
CMAPI CONFIGRET CM_Register_Notification(
[in] PCM_NOTIFY_FILTER pFilter,
[in, optional] PVOID pContext,
[in] PCM_NOTIFY_CALLBACK pCallback,
[out] PHCMNOTIFICATION pNotifyContext
);
Parameter
[in] pFilter
Zeiger auf eine CM_NOTIFY_FILTER-Struktur .
[in, optional] pContext
Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der den Kontext enthält, der an die Rückrufroutine in pCallback übergeben werden soll.
[in] pCallback
Zeiger auf die Routine, die aufgerufen werden soll, wenn das angegebene PnP-Ereignis auftritt. Den Prototyp der Rückruffunktion finden Sie im Abschnitt Hinweise .
Der Action-Parameter der Rückrufroutine ist ein Wert aus der CM_NOTIFY_ACTION-Enumeration .
Wenn eine Benachrichtigung empfangen wird, hängt die Art und Weisen, wie der Rückruf die Benachrichtigung untersucht, vom FilterType-Element des EventData-Parameters der Rückrufroutine ab:
CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE
Der Rückruf sollte EventData-u.DeviceInterface> untersuchen.
CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE
Der Rückruf sollte EventData-u.DeviceHandle> untersuchen.
CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE
Der Rückruf sollte EventData-u.DeviceInstance> untersuchen.
[out] pNotifyContext
Zeiger zum Empfangen des HCMNOTIFICATION-Handles, das dem Registrierungsaufruf entspricht.
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt die Funktion CR_SUCCESS zurück. Andernfalls wird einer der in Cfgmgr32.h definierten Fehlercodes mit CR_ Präfix zurückgegeben.
Hinweise
Achten Sie darauf, Plug & Play Geräteereignisse so schnell wie möglich zu behandeln. Wenn Ihr Ereignishandler einen Vorgang ausführt, der die Ausführung möglicherweise blockiert (z. B. E/A), empfiehlt es sich, einen anderen Thread zu starten, um den Vorgang asynchron auszuführen.
Die funktion CM_Register_Notification stellt keine Benachrichtigung über vorhandene Geräteschnittstellen bereit. Um vorhandene Schnittstellen abzurufen, rufen Sie zuerst CM_Register_Notification und dann CM_Get_Device_Interface_List auf. Wenn die Schnittstelle aktiviert ist, nachdem Ihr Treiber CM_Register_Notification aufgerufen hat, aber bevor der Treiber CM_Get_Device_Interface_List aufruft, erhält der Treiber eine Benachrichtigung über die Ankunft der Schnittstelle, und die Schnittstelle wird auch in der Liste der Geräteschnittstelleninstanzen angezeigt, die von CM_Get_Device_Interface_List zurückgegeben werden.
HCMNOTIFICATION-Handles, die von CM_Register_Notification zurückgegeben werden, müssen durch Aufrufen der funktion CM_Unregister_Notification geschlossen werden, wenn sie nicht mehr benötigt werden.
Eine Rückrufroutine verwendet den folgenden Funktionsprototyp:
typedef __callback DWORD (CALLBACK *PCM_NOTIFY_CALLBACK)(
_In_ HCMNOTIFICATION hNotify,
_In_opt_ PVOID Context,
_In_ CM_NOTIFY_ACTION Action,
_In_reads_bytes_(EventDataSize) PCM_NOTIFY_EVENT_DATA EventData,
_In_ DWORD EventDataSize
);
Wenn Sie auf eine CM_NOTIFY_ACTION_DEVICEQUERYREMOVE-Benachrichtigung reagieren, sollte der PCM_NOTIFY_CALLBACK Rückruf entweder ERROR_SUCCESS oder ERROR_CANCELLED zurückgeben. Andernfalls sollte der Rückruf ERROR_SUCCESS zurückgeben. Der Rückruf sollte keine anderen Werte zurückgeben. Eine Beschreibung anderer Aktionen finden Sie in der Dokumentation zu CM_NOTIFY_ACTION . Informationen zur Struktur, die dieser Rückruf im EventData-Parameter empfängt, finden Sie auch unter CM_NOTIFY_EVENT_DATA.
Beispiele
Ein Beispiel finden Sie unter Registrieren für die Benachrichtigung über die Ankunft der Geräteschnittstelle und Geräteentfernung.
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Verfügbar in Microsoft Windows 8 und höheren Versionen von Windows. |
| Zielplattform | Universell |
| Header | cfgmgr32.h (include Cfgmgr32.h) |
| Bibliothek | Cfgmgr32.lib; OneCoreUAP.lib auf Windows 10 |
| DLL | CfgMgr32.dll |
Weitere Informationen
Registrieren für die Benachrichtigung über die Ankunft der Geräteschnittstelle und Geräteentfernung