다음을 통해 공유


애플리케이션 알림 등록

사용자 모드 애플리케이션은 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);

RegisterDeviceNotificationUnregisterDeviceNotification 함수에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.