VDS 개체 모델

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

VDS는 디스크 및 CD-ROM 디바이스와 같은 호스트 기반 스토리지 디바이스와 하드웨어 RAID 컨트롤러에서 관리하는 디스크 배열에 대한 간접 액세스를 제공합니다. 일부 스토리지 엔터티는 물리적 디바이스를 모델링하는 반면, 다른 스토리지 엔터티는 볼륨, 파티션 등 가상 구문을 모델링합니다. 이 항목에서 설명하는 개체는 VDS의 물리적 엔터티와 가상 엔터티를 모두 나타냅니다.

애플리케이션은 이러한 개체에 의해 노출되는 메서드를 호출하고 VDS는 요청된 스토리지 작업을 수행하기 위해 적절한 공급자를 호출합니다. 애플리케이션은 공급자 프로그램을 직접 호출하지 않습니다.

개체 분류

다음 그림과 같이 소프트웨어 공급자 프로그램은 호스트 기반 엔터티를 모델링하는 개체를 구현합니다. 하드웨어 공급자 프로그램은 내부 및 외부 하드웨어 RAID 디바이스를 모델링하는 개체를 구현합니다. 나머지 공통 개체는 공급자와 독립적이거나 VDS에서 구현됩니다. VDS 개체가 아닌 스핀들은 디스크 또는 드라이브 익스텐트로 구성된 일반 스토리지 미디어의 용어입니다.

'공통 개체', '소프트웨어 공급자 개체' 및 '하드웨어 공급자 개체'로 정의된 개체의 분류를 보여 주는 다이어그램

각 개체의 동작에 대해 자세히 알아보려면 다음 항목 중에서 선택합니다.

개체 만들기

개체 만들기와 관련된 구성 및 쿼리 작업은 완료하는 데 상당한 시간이 걸릴 수 있습니다. 따라서 VDS는 모든 메서드를 비동기적으로 호출합니다. 검색 공급자는 모든 완료, 오류 또는 상태 변경 이벤트를 반환합니다. 또한 소프트웨어 공급자는 모든 오류 및 중요한 상태 변경 내용을 기록합니다.

개체 삭제

여러 VDS 메서드는 VDS 개체를 삭제하거나 변환합니다. 호출자는 메서드가 반환된 후 인터페이스 포인터를 통해 삭제된 개체에 대한 참조를 보유할 수 있습니다. 호출자가 인터페이스를 해제하면 VDS는 개체를 삭제합니다.

개체 삭제와 관련하여 호출자는 이러한 인터페이스에서 IUnknown::Release 메서드를 제외한 모든 호출을 삼가야 합니다. 공급자는 잘못된 호출자를 처리할 수 있을 만큼 강력해야 합니다. 호출자가 삭제된 개체에서 메서드를 호출하는 경우 공급자는 VDS_E_OBJECT_DELETED 반환해야 합니다.

서비스 초기화

VDS는 서비스 로더 및 서비스 개체에 대한 클래스 식별자(Clsid)를 제공하지만 서비스 로더 Clsid만 공용입니다. 서비스 초기화는 공급자, 호출 애플리케이션 및 서비스가 다음 작업을 수행할 때 발생합니다.

  • 각 새 공급자는 설치 중에 IVdsAdmin::RegisterProvider 메서드를 호출하여 VDS에 등록합니다. 호출은 시스템 하이브 아래에 공급자의 개체 GUID로 식별되는 레지스트리 키를 만듭니다. 이 키 아래에는 공급자 개체의 Clsid, 공급자의 이름, 버전 및 버전 GUID가 포함됩니다.

    참고

    공급자 개체 GUID는 영구적입니다. 소프트웨어 및 하드웨어 개체 GUID는 그렇지 않습니다.

     

  • 애플리케이션은 CoCreateInstance 함수를 호출하여 서비스 로더 Clsid를 인수로 전달합니다. 서비스 로더 개체에 대한 포인터를 사용하여 애플리케이션은 원하는 컴퓨터 이름을 매개 변수로 IVdsServiceLoader::LoadService 메서드에 전달하여 로컬 또는 원격으로 VDS를 시작할 수 있습니다.

  • 초기 애플리케이션이 서비스에 연결되면 VDS는 먼저 레지스트리 키 아래에 있는 각 Clsid에서 CoCreateInstance 를 호출한 다음, 각 공급자에서 IVdsProviderPrivate::OnLoad 메서드를 호출하여 프로그램을 초기화합니다.

VDS 정보

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad