Condividi tramite


Funzione OpenVirtualDisk (virtdisk.h)

Apre un disco rigido virtuale (VHD) o un file di immagine CD o DVD (ISO) da usare.

Sintassi

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

Parametri

[in] VirtualStorageType

Puntatore a una struttura di VIRTUAL_STORAGE_TYPE valida.

[in] Path

Puntatore a un percorso valido dell'immagine del disco virtuale da aprire.

[in] VirtualDiskAccessMask

Valore valido dell'enumerazione VIRTUAL_DISK_ACCESS_MASK .

[in] Flags

Combinazione valida di valori dell'enumerazione OPEN_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Puntatore facoltativo a una struttura di OPEN_VIRTUAL_DISK_PARAMETERS valida. Può essere NULL.

[out] Handle

Puntatore all'oggetto handle che rappresenta il disco virtuale aperto.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS (0) e il parametro Handle contiene un puntatore valido al nuovo oggetto disco virtuale.

Se la funzione ha esito negativo, il valore restituito è un codice di errore e il valore del parametro Handle non è definito. Per altre informazioni, vedere Codici di errore di sistema.

Commenti

Per evitare un errore di richiesta aperta quando si tenta di aprire un handle a un disco virtuale collegato in modo permanente, si applicano i requisiti seguenti:

  • Il parametro VirtualDiskAccessMask deve includere il flag VIRTUAL_DISK_ACCESS_DETACH (0x00040000).
  • L'accesso in scrittura al file non deve essere richiesto se l'operazione di apertura originale che ha creato il disco virtuale collegato in modo permanente richiedeva solo l'accesso in lettura.
Se la funzione OpenVirtualDisk ha esito negativo con un valore di codice di errore di ERROR_INVALID_PARAMETER (87), la causa potrebbe essere dovuta a una delle condizioni seguenti:
  • Il parametro VirtualStorageType è NULL.
  • Il parametro Path è NULL.
  • Il parametro VirtualDiskAccessMask è impostato su un valore di (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Il parametro Flags è impostato su un valore di (Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE)).
  • Il membro Version del parametro Parameters non è impostato su OPEN_VIRTUAL_DISK_VERSION_1 o OPEN_VIRTUAL_DISK_VERSION_2.
Il volume host che contiene il file di immagine del disco virtuale non può essere compresso o crittografato con EFS. Questa funzione avrà esito negativo con errore ERROR_UNSUPPORTED_COMPRESSION (618) se il volume host è stato compresso o con errore ERROR_FILE_ENCRYPTED (6002) se il volume host è stato crittografato dopo la creazione iniziale del disco virtuale.

Il percorso a cui punta il parametro Path non può trovarsi in una condivisione di rete locale, ovvero una condivisione di rete tramite loopback. Questa funzione avrà esito negativo con errore ERROR_FILE_SYSTEM_LIMITATION (665) se il percorso si trova in una condivisione di rete locale. Questa funzione avrà esito negativo con errore ERROR_FILE_CORRUPT (1392) se viene aperto un disco virtuale ISO e le dimensioni del file non sono pari a più di 2 KB (2.048 byte), è di almeno 34 KB (34.816 byte) o il descrittore della struttura del volume non contiene un identificatore di volume CDFS o UDFS noto.

Al termine dell'utilizzo dell'handle dell'oggetto restituito nel parametro Handle , usare la funzione CloseHandle per chiudere l'handle.

I file di immagine CD e DVD (ISO) non sono supportati prima di Windows 8 e Windows Server 2012.

Requisiti

Requisito Valore
Client minimo supportato Windows 7
Server minimo supportato Windows Server 2008 R2
Piattaforma di destinazione Windows
Intestazione virtdisk.h
Libreria VirtDisk.lib
DLL VirtDisk.dll

Vedi anche

Informazioni sul disco rigido virtuale

CreateVirtualDisk

Informazioni di riferimento sul disco rigido virtuale