애플리케이션 알림 등록
사용자 모드 애플리케이션은 RegisterDeviceNotification 함수를 호출하여 프로세서 또는 메모리 모듈이 하드웨어 파티션에 동적으로 추가될 때 알림을 받도록 자신을 등록합니다. 애플리케이션은 RegisterDeviceNotification 함수를 두 번 호출하고, 한 번은 프로세서 이벤트 알림을 등록하고, 두 번째는 메모리 이벤트 알림을 등록합니다. 애플리케이션은 이러한 이벤트에 대한 알림을 등록할 때 다음 GUID 중 하나를 지정합니다.
GUID_DEVICE_PROCESSOR
프로세서가 하드웨어 파티션에 동적으로 추가될 때 알림을 받을 애플리케이션을 등록합니다.
GUID_DEVICE_MEMORY
메모리가 하드웨어 파티션에 동적으로 추가될 때 알림을 받을 애플리케이션을 등록합니다.
이러한 GUID는 헤더 파일 Poclass.h에 정의되어 있습니다.
다음 코드 예제에서는 두 알림 모두에 등록하는 방법을 보여 줍니다.
HWND hWnd;
DEV_BROADCAST_DEVICEINTERFACE ProcessorFilter;
DEV_BROADCAST_DEVICEINTERFACE MemoryFilter;
HDEVNOTIFY ProcessorNotifyHandle;
HDEVNOTIFY MemoryNotifyHandle;
// The following example assumes that hWnd already
// contains a handle to the application window that
// is to receive the WM_DEVICECHANGE messages.
// Initialize the filter for processor event notification
ZeroMemory(
&ProcessorFilter,
sizeof(ProcessorFilter)
);
ProcessorFilter.dbcc_size =
sizeof(DEV_BROADCAST_DEVICEINTERFACE);
ProcessorFilter.dbcc_devicetype =
DBT_DEVTYP_DEVICEINTERFACE;
ProcessorFilter.dbcc_classguid =
GUID_DEVICE_PROCESSOR;
// Register the application window to receive
// WM_DEVICECHANGE messages for processor events.
ProcessorNotifyHandle =
RegisterDeviceNotification(
hWnd,
&ProcessorFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
// Initialize the filter for memory event notification
ZeroMemory(
&MemoryFilter,
sizeof(MemoryFilter)
);
MemoryFilter.dbcc_size =
sizeof(DEV_BROADCAST_DEVICEINTERFACE);
MemoryFilter.dbcc_devicetype =
DBT_DEVTYP_DEVICEINTERFACE;
MemoryFilter.dbcc_classguid =
GUID_DEVICE_MEMORY;
// Register the application's window to receive
// WM_DEVICECHANGE messages for memory events.
MemoryNotifyHandle =
RegisterDeviceNotification(
hWnd,
&MemoryFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
참고 애플리케이션이 프로세서에 대해서만 알림을 수신해야 하는 경우 메모리 이벤트 알림을 위해 등록할 필요가 없습니다. 마찬가지로 애플리케이션에 메모리에 대한 알림만 있어야 하는 경우 프로세서 이벤트 알림을 등록할 필요가 없습니다.
애플리케이션이 더 이상 프로세서 또는 메모리 이벤트에 대한 알림을 받을 필요가 없는 경우 UnregisterDeviceNotification 함수를 호출하여 이러한 이벤트에 대한 WM_DEVICECHANGE 메시지를 수신하지 못하도록 창을 등록 취소할 수 있습니다. 다음 코드 예제에서는 애플리케이션 알림에 대한 등록을 취소하는 방법을 보여 줍니다.
// Unregister the application window from receiving
// WM_DEVICECHANGE messages for processor events.
UnregisterDeviceNotification(ProcessorNotifyHandle);
// Unregister the application window from receiving
// WM_DEVICECHANGE messages for memory events.
UnregisterDeviceNotification(MemoryNotifyHandle);
RegisterDeviceNotification 및 UnregisterDeviceNotification 함수에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.