IVdsHwProviderStoragePools::CreateLunInStoragePool 메서드(vdshwprv.h)
[Windows 8 및 Windows Server 2012 가상 디스크 서비스 COM 인터페이스는 Windows Storage 관리 API로 대체됩니다.]
스토리지 풀에 LUN을 만듭니다.
구문
HRESULT CreateLunInStoragePool(
[in] VDS_LUN_TYPE type,
[in] ULONGLONG ullSizeInBytes,
[in] VDS_OBJECT_ID StoragePoolId,
[in] LPWSTR pwszUnmaskingList,
[in] VDS_HINTS2 *pHints2,
[out] IVdsAsync **ppAsync
);
매개 변수
[in] type
만들 LUN의 형식을 지정하는 VDS_LUN_TYPE 열거형 값입니다. 새 LUN은 자동 매핑 형식 또는 특정 RAID 형식일 수 있지만 둘 다 사용할 수는 없습니다. 호출자가 automagic 형식을 지정하는 경우 pHints2 매개 변수에 하나 이상의 자동 매핑 힌트를 지정해야 합니다.
ppAsync 매개 변수에 반환된 인터페이스 포인터에서 IVdsAsync::Wait 메서드를 호출하여 새 LUN 개체에 대한 인터페이스 포인터를 검색할 수 있습니다. Wait에서 반환된 VDS_ASYNC_OUTPUT 구조체에는 cl.pLunUnk 멤버의 LUN 개체 인터페이스 포인터가 포함됩니다.
[in] ullSizeInBytes
새 LUN의 크기(바이트)입니다. 공급자는 맞춤 요구 사항 또는 기타 제한을 충족하기 위해 크기를 늘리거나 낮출 수 있습니다. (대부분의 경우 공급자는 반올림하여 드문 예외를 제외하고 LUN이 요청된 만큼 큰지 확인합니다.)
LUN을 만든 후 호출자는 IVdsLun::GetProperties 메서드를 호출하여 LUN의 실제 크기를 확인할 수 있습니다.
[in] StoragePoolId
LUN을 만들 스토리지 풀을 식별하는 VDS_OBJECT_ID 값입니다. 이 매개 변수는 필수이며 GUID_NULL 수 없습니다.
[in] pwszUnmaskingList
LUN에 대한 액세스 권한을 부여할 컴퓨터를 지정하는 목록입니다. 목록은 세미콜론으로 구분된 NULL로 끝나는 사람이 읽을 수 있는 문자열입니다.
값이 ""이면 스토리지 하위 시스템에 연결된 HBA 포트가 있는 모든 컴퓨터에 LUN에 대한 액세스 권한이 부여됩니다. 값이 ""인 경우 LUN에 대한 액세스 권한을 부여할 컴퓨터가 없습니다.
"*" 또는 ""를 지정하면 다른 값을 지정할 수 없습니다.
파이버 채널 네트워크 및 SAS(직렬 연결 SCSI) 네트워크의 경우 각 항목은 LUN이 마스크되지 않은 각 포트의 64비트 WWN(World-Wide Name)이며, 가장 중요한 바이트는 16자 길이인 16진수 문자열로 포맷됩니다. 예를 들어 01:23:45:67:89:AB:CD:EF의 WWN 주소는 "0123456789ABCDEF"로 표시됩니다. 자세한 내용은 파이버 채널 및 SAS에 대한 T10 사양을 참조하세요.
iSCSI 네트워크의 경우 각 항목은 LUN이 마스크 해제된 각 초기자의 iSCSI 정규화된 이름(IQN)입니다. 특정 초기자에 대한 마스크를 해제한 LUN은 해당 초기자와 연결된 것으로 간주됩니다.
[in] pHints2
LUN을 만드는 데 사용할 힌트를 지정하는 VDS_HINTS2 구조체에 대한 포인터입니다. 공급자는 LUN에 힌트를 적용할 필요가 없습니다. VDS_HINTS2 구조에 지정된 힌트는 공급자에 대한 요청일 뿐입니다.
LUN을 만든 후 호출자는 IVdsLun2::QueryHints2 메서드를 호출하여 공급자가 적용한 힌트를 확인할 수 있습니다.
type 매개 변수가 자동 매핑이 아닌 형식을 지정하는 경우 이 매개 변수는 NULL이어야 합니다.
[out] ppAsync
성공적으로 완료되면 IVdsAsync 인터페이스를 수신하여 이 작업을 모니터링하고 제어하는 IVdsAsync 인터페이스에 대한 포인터입니다. 호출자는 수신된 인터페이스를 해제해야 합니다. 인터페이스에서 IVdsAsync::Wait 메서드가 호출되고 성공 HRESULT 값이 반환되면 각 인터페이스 포인터에서 IUnknown::Release 메서드를 호출하여 VDS_ASYNC_OUTPUT 구조에서 반환된 인터페이스를 해제해야 합니다. 그러나 Wait가 실패 HRESULT 값을 반환하거나 Wait의 pHrResult 매개 변수가 오류 HRESULT 값을 수신하는 경우 VDS_ASYNC_OUTPUT 구조체의 인터페이스 포인터는 NULL이며 해제할 필요가 없습니다. Winerror.h에 정의된 SUCCEEDED 및 FAILED 매크로를 사용하여 성공 또는 실패 HRESULT 값을 테스트할 수 있습니다.
반환 값
이 메서드는 표준 HRESULT 값(예: E_INVALIDARG 또는 E_OUTOFMEMORY) 및 VDS 관련 반환 값을 반환할 수 있습니다. 또한 HRESULT_FROM_WIN32 매크로를 사용하여 변환된 시스템 오류 코드를 반환할 수도 있습니다. 오류는 VDS 자체 또는 사용 중인 기본 VDS 공급자 에서 발생할 수 있습니다. 가능한 반환 값은 다음과 같습니다.
반환 코드 | Description |
---|---|
|
메서드가 완료되었습니다. |
설명
호출자는 형식 및 pHints2 매개 변수에 적절한 값을 선택하여 LUN의 특성을 전적으로, 부분적으로 또는 최소한으로 지정할 수 있습니다. 공급자는 pHints2 매개 변수가 가리키는 VDS_HINTS2 구조에 지정된 자동 매핑 힌트에 따라 지정되지 않은 특성을 자동으로 포함할 수 있습니다.
구현자에 대한 참고 사항: 이 메서드에 대한 호출이 비동기 작업을 시작하지 않더라도 공급자는 ppAsync 매개 변수에서 IVdsAsync 인터페이스 포인터를 반환해야 합니다.
pwszUnmaskingList 매개 변수의 WWN 및 IQN 목록에는 중복된 이름이 포함될 수 있습니다. 목록의 모든 이름의 유효성을 검사하고 필요한 경우 중복 항목을 제거하는 것은 공급자의 책임입니다.
CreateLunInStoragePool 메서드에 대한 응답으로 새 LUN을 호스트에 마스킹 해제하기 전에 공급자는 첫 번째 및 마지막 MB를 0으로 채워 LUN을 초기화되지 않은 상태로 유지해야 합니다.
E_INVALIDARG 반환 값과 VDS_E_NOT_SUPPORTED 반환 값 간에는 미묘한 차이가 있습니다. 공급자는 VDS API가 클라이언트에 표시할 수 있는 모든 기능을 구현하지 않을 것으로 예상됩니다. 예를 들어 CreateLunInStoragePool 메서드는 다양한 유형의 LUN(예: 단순, 미러, 스트라이프 및 패리티)을 만드는 기능을 노출합니다. 그러나 공급자가 모든 유형의 LUN을 지원할 필요는 없습니다. 호출자가 유효한 VDS_LUN_TYPE 열거형 값이 아닌 형식 매개 변수의 값을 지정하는 경우 공급자는 E_INVALIDARG 반환해야 합니다. 호출자가 공급자가 지원하지 않는 유효한 형식 값을 지정하는 경우 공급자는 VDS_E_NOT_SUPPORTED 반환해야 합니다.
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | vdshwprv.h |
라이브러리 | Uuid.lib |