IVdsHwProviderStoragePools::CreateLunInStoragePool-Methode (vds.h)

[Ab Windows 8 und Windows Server 2012 wird die COM-Schnittstelle des Virtuellen Datenträgerdiensts durch die Windows Storage Management-API abgelöst.]

Erstellt eine LUN in einem Speicherpool.

Syntax

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
);

Parameter

[in] type

Ein VDS_LUN_TYPE Enumerationswert, der den Typ der zu erstellenden LUN angibt. Die neue LUN kann ein automagischer Typ oder ein bestimmter RAID-Typ sein, aber nicht beides. Wenn der Aufrufer einen automagischen Typ angibt, sollten mindestens ein automagic-Hinweis im pHints2-Parameter angegeben werden.

Der Schnittstellenzeiger für das neue LUN-Objekt kann durch Aufrufen der IVdsAsync::Wait-Methode für den im ppAsync-Parameter zurückgegebenen Schnittstellenzeiger abgerufen werden. Die vonWait zurückgegebene VDS_ASYNC_OUTPUT-Struktur enthält den LUN-Objektschnittstellenzeiger im cl.pLunUnk-Element .

[in] ullSizeInBytes

Die Größe der neuen LUN in Bytes. Der Anbieter kann die Größe auf- oder herunterrunden, um Ausrichtungsanforderungen oder andere Einschränkungen zu erfüllen. (In den meisten Fällen rundet der Anbieter auf und stellt sicher, dass die LUN mit seltenen Ausnahmen mindestens so groß wie angefordert ist.)

Nachdem die LUN erstellt wurde, kann der Aufrufer die tatsächliche Größe der LUN durch Aufrufen der IVdsLun::GetProperties-Methode ermitteln.

[in] StoragePoolId

Ein VDS_OBJECT_ID Wert, der den Speicherpool angibt, in dem die LUN erstellt werden soll. Dieser Parameter ist erforderlich und kann nicht GUID_NULL werden.

[in] pwszUnmaskingList

Eine Liste, die die Computer angibt, denen Zugriff auf die LUN gewährt werden soll. Die Liste ist eine durch Semikolons getrennte, NULL-endende, für Menschen lesbare Zeichenfolge.

Wenn der Wert "" ist, muss allen Computern, die über einen HBA-Port verfügen, der an das Speichersubsystem angefügt ist, Zugriff auf die LUN gewährt werden. Wenn der Wert "" ist, soll keinem Computer Zugriff auf die LUN gewährt werden.

Hinweis Wenn der Wert "" lautet, gewähren die meisten Hardwareanbieter in der Praxis nur den Ports und Initiatoren auf dem lokalen Computer Zugriff auf die LUN.

 

Wenn "*" oder "" angegeben ist, kann kein anderer Wert angegeben werden.

Bei Fibre Channel-Netzwerken und serial angefügten SCSI-Netzwerken (SAS) ist jeder Eintrag ein 64-Bit World Wide Name (WWN) jedes Ports, an den die LUN entmasket ist, formatiert als hexadezimale Zeichenfolge (16 Zeichen lang), wobei zuerst das wichtigste Byte vorhanden ist. Beispielsweise wird eine WWN-Adresse von 01:23:45:67:89:AB:CD:EF als "0123456789ABCDEF" dargestellt. Weitere Informationen finden Sie in den T10-Spezifikationen für Fibre Channel und SAS.

Bei iSCSI-Netzwerken ist jeder Eintrag ein iSCSI-qualifizierter Name (IQN) jedes Initiators, für den die LUN entmasket ist. Eine LUN, die einem bestimmten Initiator entlarvt wurde, gilt als mit diesem Initiator verknüpft.

Hinweis Die Entlarmungsliste kann mehrmals denselben WWN oder IQN enthalten. Es wird nicht erwartet, dass der Aufrufer Duplikate aus der Liste entfernt oder das Format des WWN oder IQN überprüft.
 
Nachdem die LUN erstellt wurde, kann der Aufrufer die tatsächliche Aufhebungsliste ermitteln, indem er die IVdsLun::GetProperties-Methode aufruft .

[in] pHints2

Ein Zeiger auf eine VDS_HINTS2-Struktur , die die Hinweise angibt, die beim Erstellen der LUN verwendet werden sollen. Der Anbieter muss die Hinweise nicht auf die LUN anwenden. Die in der VDS_HINTS2-Struktur angegebenen Hinweise sind nur eine Anforderung an den Anbieter.

Nachdem die LUN erstellt wurde, kann der Aufrufer die Vom Anbieter angewendeten Hinweise ermitteln, indem er die IVdsLun2::QueryHints2-Methode aufruft .

Wenn der Type-Parameter einen nicht automagischen Typ angibt, sollte dieser Parameter NULL sein.

[out] ppAsync

Ein Zeiger auf eine IVdsAsync-Schnittstelle , die nach erfolgreichem Abschluss die IVdsAsync-Schnittstelle empfängt, um diesen Vorgang zu überwachen und zu steuern. Aufrufer müssen die empfangene Schnittstelle freigeben, wenn sie damit fertig sind. Wenn die IVdsAsync::Wait-Methode für die Schnittstelle aufgerufen wird und ein erfolgreicher HRESULT-Wert zurückgegeben wird, müssen die in der VDS_ASYNC_OUTPUT-Struktur zurückgegebenen Schnittstellen durch Aufrufen der IUnknown::Release-Methode für jeden Schnittstellenzeiger freigegeben werden. Wenn Wait jedoch einen HRESULT-Fehlerwert zurückgibt oder der pHrResult-Parameter von Wait einen HRESULT-Fehlerwert empfängt, sind die Schnittstellenzeiger in der VDS_ASYNC_OUTPUT-StrukturNULL und müssen nicht freigegeben werden. Sie können HRESULT-Werte für Erfolg oder Fehler testen, indem Sie die in Winerror.h definierten Makros SUCCEEDED und FAILED verwenden.

Rückgabewert

Diese Methode kann HRESULT-Standardwerte wie E_INVALIDARG oder E_OUTOFMEMORY und VDS-spezifische Rückgabewerte zurückgeben. Es kann auch konvertierte Systemfehlercodes mithilfe des makros HRESULT_FROM_WIN32 zurückgeben. Fehler können vom VDS selbst oder vom zugrunde liegenden VDS-Anbieter stammen, der verwendet wird. Folgende Rückgabewerte sind möglich.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.

Bemerkungen

Durch Auswahl geeigneter Werte für die Parameter typ und pHints2 kann der Aufrufer die Attribute der LUN vollständig, teilweise oder minimal angeben. Der Anbieter kann basierend auf den automagischen Hinweisen, die in der VDS_HINTS2-Struktur angegeben sind, auf die der pHints2-Parameter verweist, automatisch nicht angegebene Attribute einschließen.

Hinweise für Implementierer: Der Anbieter muss einen IVdsAsync-Schnittstellenzeiger im ppAsync-Parameter zurückgeben, auch wenn der Aufruf dieser Methode keinen asynchronen Vorgang initiiert.

Die Liste der WWNs und IQNs im parameter pwszUnmaskingList kann doppelte Namen enthalten. Es liegt in der Verantwortung des Anbieters, alle Namen in der Liste zu überprüfen und bei Bedarf Duplikate zu entfernen.

Als Reaktion auf die CreateLunInStoragePool-Methode und vor dem Aufheben der Neuen LUN für einen Host sollte der Anbieter das erste und das letzte Megabyte mit Nullen füllen, sodass die LUN nicht initialisiert wird.

Es gibt einen geringfügigen Unterschied zwischen den E_INVALIDARG und VDS_E_NOT_SUPPORTED Rückgabewerten. Von Anbietern wird nicht erwartet, dass sie jedes Feature implementieren, das die VDS-API einem Client präsentieren kann. Die CreateLunInStoragePool-Methode macht beispielsweise die Möglichkeit verfügbar, viele verschiedene Arten von LUNs zu erstellen (z. B. einfache, Spiegel, Striped und Parität). Anbieter müssen jedoch nicht alle Arten von LUNs unterstützen. Wenn der Aufrufer einen Wert für den Typparameter angibt, der kein gültiger VDS_LUN_TYPE Enumerationswert ist, sollte der Anbieter E_INVALIDARG zurückgeben. Wenn der Aufrufer einen gültigen Typwert angibt, den der Anbieter nicht unterstützt, sollte der Anbieter VDS_E_NOT_SUPPORTED zurückgeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile vds.h
Bibliothek Uuid.lib

Weitere Informationen

IVdsHwProviderStoragePools

IVdsLun2::QueryHints2

IVdsLun::GetProperties

VDS_HINTS2

VDS_LUN_TYPE