Share via


OpenVirtualDisk-Funktion (virtdisk.h)

Öffnet eine virtuelle Festplatte (VHD) oder CD- oder DVD-Imagedatei (ISO) zur Verwendung.

Syntax

DWORD OpenVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE         VirtualStorageType,
  [in]           PCWSTR                        Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK      VirtualDiskAccessMask,
  [in]           OPEN_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] POPEN_VIRTUAL_DISK_PARAMETERS Parameters,
  [out]          PHANDLE                       Handle
);

Parameter

[in] VirtualStorageType

Ein Zeiger auf eine gültige VIRTUAL_STORAGE_TYPE-Struktur .

[in] Path

Ein Zeiger auf einen gültigen Pfad zum zu öffnenden Image des virtuellen Datenträgers.

[in] VirtualDiskAccessMask

Ein gültiger Wert der VIRTUAL_DISK_ACCESS_MASK-Enumeration .

[in] Flags

Eine gültige Kombination von Werten der OPEN_VIRTUAL_DISK_FLAG-Enumeration .

[in, optional] Parameters

Ein optionaler Zeiger auf eine gültige OPEN_VIRTUAL_DISK_PARAMETERS-Struktur . Kann NULL sein.

[out] Handle

Ein Zeiger auf das Handle-Objekt, das den geöffneten virtuellen Datenträger darstellt.

Rückgabewert

Wenn die Funktion erfolgreich ist, lautet der Rückgabewert ERROR_SUCCESS (0), und der Handle-Parameter enthält einen gültigen Zeiger auf das neue objekt des virtuellen Datenträgers.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Fehlercode, und der Wert des Handle-Parameters ist undefiniert. Weitere Informationen finden Sie unter Systemfehlercodes.

Hinweise

Um einen Fehler bei einer offenen Anforderung beim Versuch zu verhindern, ein Handle für einen dauerhaft angefügten virtuellen Datenträger zu öffnen, gelten die folgenden Anforderungen:

  • Der VirtualDiskAccessMask-Parameter muss das flag VIRTUAL_DISK_ACCESS_DETACH (0x00040000) enthalten.
  • Schreibzugriff auf die Datei darf nicht angefordert werden, wenn der ursprüngliche Öffnungsvorgang, der den dauerhaft angefügten virtuellen Datenträger erstellt hat, nur Lesezugriff angefordert hat.
Wenn die OpenVirtualDisk-Funktion mit dem Fehlercodewert ERROR_INVALID_PARAMETER (87) fehlschlägt, kann die Ursache auf eine der folgenden Bedingungen zurückzuführen sein:
  • Der VirtualStorageType-Parameter ist NULL.
  • Der Path-Parameter ist NULL.
  • Der VirtualDiskAccessMask-Parameter ist auf den Wert festgelegt (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Der Flags-Parameter wird auf den Wert festgelegt (Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE)).
  • Der Version-Member des Parameters-Parameters ist nicht auf OPEN_VIRTUAL_DISK_VERSION_1 oder OPEN_VIRTUAL_DISK_VERSION_2 festgelegt.
Das Hostvolume, das die Imagedatei des virtuellen Datenträgers enthält, kann nicht komprimiert oder EFS verschlüsselt werden. Diese Funktion schlägt mit dem Fehler ERROR_UNSUPPORTED_COMPRESSION (618) fehl, wenn das Hostvolume komprimiert wurde, oder mit dem Fehler ERROR_FILE_ENCRYPTED (6002), wenn das Hostvolume nach der ersten Erstellung des virtuellen Datenträgers EFS verschlüsselt wurde.

Der Pfad, auf den der Path-Parameter verweist, darf sich nicht auf einer lokalen Netzwerkfreigabe befinden (das ist eine Netzwerkfreigabe per Loopback). Diese Funktion schlägt mit dem Fehler ERROR_FILE_SYSTEM_LIMITATION (665) fehl, wenn sich der Pfad auf einer lokalen Netzwerkfreigabe befindet. Diese Funktion schlägt mit dem Fehler ERROR_FILE_CORRUPT (1392) fehl, wenn ein virtueller ISO-Datenträger geöffnet wird und die Dateigröße kein gerades Vielfaches von 2 KB (2.048 Byte), mindestens 34 KB (34.816 Bytes) beträgt oder der Volumestrukturdeskriptor keinen bekannten CDFS- oder UDFS-Volumebezeichner enthält.

Wenn eine Anwendung das im Handle-Parameter zurückgegebene Objekthandle verwendet hat, verwenden Sie die CloseHandle-Funktion , um das Handle zu schließen.

CD- und DVD-Imagedateien (ISO) werden vor Windows 8 und Windows Server 2012 nicht unterstützt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7
Unterstützte Mindestversion (Server) Windows Server 2008 R2
Zielplattform Windows
Kopfzeile virtdisk.h
Bibliothek VirtDisk.lib
DLL VirtDisk.dll

Weitere Informationen

Informationen zu VHD

CreateVirtualDisk

VHD-Referenz