Share via


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에 대한 액세스 권한을 부여할 컴퓨터가 없습니다.

참고 실제로 값이 ""인 경우 대부분의 하드웨어 공급자는 로컬 컴퓨터의 포트 및 초기자만 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은 해당 초기자와 연결된 것으로 간주됩니다.

참고 마스킹 해제 목록에는 동일한 WWN 또는 IQN이 두 번 이상 포함될 수 있습니다. 호출자는 목록에서 중복 항목을 제거하거나 WWN 또는 IQN 형식의 유효성을 검사할 필요가 없습니다.
 
LUN을 만든 후 호출자는 IVdsLun::GetProperties 메서드를 호출하여 실제 마스킹 해제 목록을 확인할 수 있습니다.

[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 값을 반환하거나 WaitpHrResult 매개 변수가 오류 HRESULT 값을 수신하는 경우 VDS_ASYNC_OUTPUT 구조체의 인터페이스 포인터는 NULL이며 해제할 필요가 없습니다. Winerror.h에 정의된 SUCCEEDED 및 FAILED 매크로를 사용하여 성공 또는 실패 HRESULT 값을 테스트할 수 있습니다.

반환 값

이 메서드는 표준 HRESULT 값(예: E_INVALIDARG 또는 E_OUTOFMEMORY) 및 VDS 관련 반환 값을 반환할 수 있습니다. 또한 HRESULT_FROM_WIN32 매크로를 사용하여 변환된 시스템 오류 코드를 반환할 수도 있습니다. 오류는 VDS 자체 또는 사용 중인 기본 VDS 공급자 에서 발생할 수 있습니다. 가능한 반환 값은 다음과 같습니다.

반환 코드 Description
S_OK
메서드가 완료되었습니다.

설명

호출자는 형식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

추가 정보

IVdsHwProviderStoragePools

IVdsLun2::QueryHints2

IVdsLun::GetProperties

VDS_HINTS2

VDS_LUN_TYPE