다음을 통해 공유


VDS 알림

[Windows 8 및 Windows Server 2012 가상 디스크 서비스 COM 인터페이스는 Windows Storage 관리 API로 대체됩니다.]

공급자는 VDS에 이벤트 알림을 보낼 수 있으며 VDS는 애플리케이션에 알림을 전달할 수 있습니다. VDS에서 사용되는 알림 모델은 COM 개체에서 사용하는 연결 지점 모델과 유사합니다.

VDS는 드라이브 문자 할당 또는 할당되지 않은 디스크 도착과 같은 이벤트에 대한 서비스 알림을 생성합니다. VDS가 공급자에 디스크를 할당하면 공급자는 연결된 알림을 생성해야 합니다. 다음 그림은 VDS 알림 모델에 사용되는 인터페이스 및 메서드를 보여 줍니다.

애플리케이션, 가상 디스크 서비스 및 V D S 공급자 간의 인터페이스 및 메서드(Advise, OnLoad 및 OnNotify)를 보여 주는 다이어그램

알림을 수신하기 위해 VDS는 IVdsProviderPrivate::OnLoad 메서드를 호출하고 인터페이스에 대한 포인터를 전달하여 IVdsAdviseSink 인터페이스를 공급자 개체에 등록합니다. 새 볼륨 또는 드라이브의 도착과 같은 알림 이벤트가 발생하면 공급자는 적절한 알림 구조를 IVdsAdviseSink::OnNotify 메서드 매개 변수로 VDS에 전달합니다 .

이 프로세스는 애플리케이션과 VDS 간에 유사합니다. 특히 알림을 받기 위해 애플리케이션은 IVdsService::Advise 메서드를 호출하고 인터페이스에 포인터를 전달하여 해당 IVdsAdviseSink 인터페이스를 VDS에 등록합니다. VDS는 공급자로부터 알림을 받으면 등록된 애플리케이션에 적절한 알림 구조를 IVdsAdviseSink::OnNotify 메서드 매개 변수로 전달합니다.

참고

Advise를 호출하는 애플리케이션은 결국 IVdsService::Unadvise 메서드를 호출해야 합니다. 이상적으로는 더 이상 알림을 받을 필요가 없는 즉시 Unadvise 를 호출해야 합니다.

 

다음 표에는 개체 유형별 공급자 생성 알림이 나열되어 있습니다.

Object 알림 이벤트 설명에 연결
Pack VDS_NF_PACK_ARRIVE 1 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_DEPART 2 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_MODIFY 3 VDS_PACK_NOTIFICATION
볼륨 VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
볼륨 VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
볼륨 VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
볼륨 VDS_NF_VOLUME_REBUILDING_PROGRESS 7 VDS_VOLUME_NOTIFICATION
디스크 VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
디스크 VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
디스크 VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
파티션 VDS_NF_PARTITION_ARRIVE 11 VDS_PARTITION_NOTIFICATION
파티션 VDS_NF_PARTITION_DEPART 12 VDS_PARTITION_NOTIFICATION
파티션 VDS_NF_PARTITION_MODIFY 13 VDS_PARTITION_NOTIFICATION
하위 시스템 VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
하위 시스템 VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
하위 시스템 VDS_NF_SUB_SYSTEM_MODIFY 151 VDS_SUB_SYSTEM_NOTIFICATION
컨트롤러 VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
컨트롤러 VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
컨트롤러 VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
컨트롤러 VDS_NF_CONTROLLER_REMOVED 351 VDS_CONTROLLER_NOTIFICATION
포트 VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
포트 VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
드라이브 VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
드라이브 VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
드라이브 VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
드라이브 VDS_NF_DRIVE_REMOVED 354 VDS_DRIVE_NOTIFICATION
LUN VDS_NF_LUN_ARRIVE 108 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_DEPART 109 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_MODIFY 110 VDS_LUN_NOTIFICATION

 

VDS는 나머지 알림을 생성합니다. 다음 표에서는 범주별 서비스 기반 알림 상수를 나열합니다.

범주 알림 이벤트 설명에 연결
디스크 VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
디스크 VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
디스크 VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
드라이브 문자 VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
드라이브 문자 VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
파일 시스템 VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
파일 시스템 VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
볼륨 VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

VDS 개체 모델

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise