IVdsPack::CreateVolume-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 ein Volume innerhalb des Pakets. Der Schnittstellenzeiger für das neue Volumeobjekt kann durch Aufrufen von IVdsAsync::Wait über den ppAsync-Parameter abgerufen werden. Die zurückgegebene VDS_ASYNC_OUTPUT-Struktur enthält den Zeiger der Volumeobjektschnittstelle im cv.pVolumeUnk-Element .
Syntax
HRESULT CreateVolume(
[in] VDS_VOLUME_TYPE type,
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[in] ULONG ulStripeSize,
[out] IVdsAsync **ppAsync
);
Parameter
[in] type
Ein von VDS_VOLUME_TYPE aufgezählter Volumetyp. Volumes auf Basisdatenträgern können nur einen Umfang aufweisen, und nur das flag VDS_VT_SIMPLE ist gültig.
[in] pInputDiskArray
Zeiger auf ein Array von VDS_INPUT_DISK Strukturen; Eine Struktur für jeden Datenträger. Ein Datenträger kann nur einmal in das Array eingeschlossen werden. Alle Datenträger im Array müssen verwendet werden, andernfalls schlägt die Methode fehl. Aufrufer müssen das Array zuordnen und initialisieren und den Arbeitsspeicher freigeben, wenn der Aufruf zurückgibt.
[in] lNumberOfDisks
Die Gesamtzahl der Datenträger, die zum Volume beitragen.
[in] ulStripeSize
Wenn das Volume mit Stripeset versehen ist, die Größe jedes Stripes in Bytes. Übergeben Sie null Bytes für VDS_VT_SIMPLE, VDS_VT_SPAN und VDS_VT_MIRROR. 64 KB für VDS_VT_STRIPE und VDS_VT_PARITY.
[out] ppAsync
Die Adresse eines IVdsAsync-Schnittstellenzeigers , der von VDS bei der Rückgabe initialisiert wird. Aufrufer müssen die Schnittstelle freigeben. Verwenden Sie diesen Zeiger, um den status des Vorgangs abzubrechen, abzuwarten oder abzufragen.
Wenn Sie IVdsAsync::Wait für diese Methode aufrufen und ein erfolgreicher HRESULT-Wert zurückgegeben wird, müssen Sie die in der VDS_ASYNC_OUTPUT-Struktur zurückgegebenen Schnittstellen freigeben, indem Sie die IUnknown::Release-Methode für jeden Schnittstellenzeiger aufrufen. 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/-wert | BESCHREIBUNG |
---|---|
|
Das Volume wurde erfolgreich erstellt. |
|
Es wurde keine Volume-Eingangsbenachrichtigung empfangen. Möglicherweise müssen Sie IVdsService::Refresh aufrufen. |
|
Das Volume wurde erfolgreich erstellt, aber VDS konnte die Startoptionen im BCD-Speicher (Boot Configuration Data) nicht aktualisieren.
Windows Server 2003: Startoptionen werden in der boot.ini-Datei auf einem x86- oder x64-System oder NVRAM auf einem Itanium-System gespeichert. |
|
Die angegebenen Datenträger gehören nicht zum gleichen Paket. |
|
Fehler beim LDM-Dienst bei einer Methode. |
|
Die übergebene Blöckegröße ist zu klein. |
|
Die angegebene Anzahl von Datenträgern ist für diesen Vorgang ungültig. |
|
Die Memberanzahl für das Volume muss größer als 0 sein. |
|
Die Memberindizes müssen monoton ansteigen und mit 0 beginnen. |
|
Der übergebene Datenträger ist ein CD-ROM- oder DVD-Gerät. |
|
Dieser Vorgang ist für dieses Datenträgerpaket nicht zulässig. |
|
Die Plexanzahl für das Volume muss größer als 0 sein. |
|
Die Plexindizes müssen monoton ansteigen und mit 0 beginnen. |
|
Die Stripegröße in Bytes muss eine Leistung von 2 für Striped- und RAID-5-Volumetypen und für alle anderen Volumetypen null sein. |
|
Der angegebene Datenträger fehlt. |
|
Ein Wechseldatenträger enthält keine Medien, die über das Datenträgerarray übergeben werden. |
|
Auf einem der Datenträger ist nicht genügend Speicherplatz vorhanden. |
|
Der Volumetyp wird nicht unterstützt, oder auf dem An die -Methode übergebenen Wechseldatenträger ist bereits ein Volume vorhanden. Ein Wechseldatenträger kann nur über ein Volume verfügen. |
|
Mindestens einer der übergebenen Datenträger wurde nicht gefunden. |
|
Ein einzelner Datenträger kann nicht zu mehreren Membern oder mehreren Plexes desselben Volumes beitragen. |
|
Auf das Zielpaket kann nicht zugegriffen werden. |
|
Die maximale Anzahl von Partitionen (primäre Partitionen oder primäre Partitionen mit einer erweiterten Partition) ist bereits vorhanden, wenn der Aufrufer versucht, eine zusätzliche primäre Partition oder erweiterte Partition zu erstellen. |
|
Der Cache des dynamischen Anbieters ist beschädigt. |
|
Pro Volume sind nicht mehr als 32 Datenträger zulässig. |
|
Die Volumegröße ist zu klein. |
Hinweise
Basisdatenträger dürfen nur einfache Volumes enthalten. Dynamische Datenträger können Volumes aller Typen enthalten, solange das Betriebssystem den Bindungsvorgang unterstützt. Nicht-Serverplattformen unterstützen keine fehlertoleranten Bindungsvorgänge. Allen neu erstellten Volumes fehlt ein Laufwerkbuchstabe.
Auf einem einfachen Datenträger erstellt diese Methode eine primäre Partition. Wenn bereits drei primäre Partitionen auf dem Datenträger vorhanden sind, wird eine erweiterte Partition erstellt, um den größten zusammenhängenden freien Speicherplatz abzudecken, der auf dem Datenträger übrig ist, und erstellt dann ein logisches Laufwerk innerhalb der erweiterten Partition.
Ein Datenträger kann nicht zu mehr als einem Plex desselben Volumes beitragen. Ein einzelner Datenträger kann jedoch zu mehreren Volumes beitragen. Ein einfaches Volume verfügt nur über eine VDS_INPUT_DISK-Struktur , während übergreifende, gestreifte, gespiegelte und RAID-5-Volumes eine Struktur für jeden mitwirkenden Datenträger aufweisen.
Die Größe des in der VDS_INPUT_DISK-Struktur angegebenen Datenträgers kann der vollständige Datenträger oder ein Teil des Datenträgers sein. Wenn zwei Datenträger ein gespiegeltes Volume bilden, verwendet VDS den kleinsten Datenträger, um die Größe des Spiegel zu berechnen. (Die Anbieterrichtlinie bestimmt den tatsächlichen Offset, die Länge und die Anzahl der Datenträgerausdehnungen, die einem bestimmten Eingabedatenträger zugeordnet sind.) Verwenden Sie die IVdsPack::QueryVolumes-Methode , um die genaue Größe des erstellten Volumes zu bestimmen.
Um ein logisches Volume mit einem optionalen Ausrichtungsparameter zu erstellen, verwenden Sie die IVdsPack2::CreateVolume2-Methode , oder verwenden Sie den HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment Registrierungsschlüssel, um den Ausrichtungswert in Bytes anzugeben.
Windows 7, Windows Server 2008 R2, Windows Vista und Windows Server 2008: Auf einem einfachen Datenträger ignoriert die CreateVolume-Methode den HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment Registrierungsschlüssel. Dies ist ein bekanntes Problem und wird behoben. Verwenden Sie als Problemumgehung die IVdsAdvancedDisk::CreatePartition - oder IVdsCreatePartitionEx::CreatePartitionEx-Methode , um Partitionen auf dem Basisdatenträger zu erstellen, damit sie ordnungsgemäß ausgerichtet sind.
Dynamische Partitionen und Volumes werden mithilfe der Werte unter dem folgenden Registrierungsschlüssel ausgerichtet:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment
Die Standardausrichtung beträgt 1 MB, wenn der Datenträger 4 GB oder größer ist, oder 64 KB, wenn der Datenträger kleiner als 4 GB ist.
Implementer müssen einen Zeiger auf die IVdsAsync-Schnittstelle für diese Methode zurückgeben, unabhängig davon, ob der Aufruf einen asynchronen Vorgang initiiert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | vds.h |
Bibliothek | Uuid.lib |