IVdsPack::Metode CreateVolume (vds.h)

[Dimulai dengan Windows 8 dan Windows Server 2012, antarmuka COM Layanan Disk Virtual digantikan oleh WINDOWS Storage Management API.]

Membuat volume dalam paket. Penunjuk antarmuka untuk objek volume baru dapat diambil dengan memanggil IVdsAsync::Wait melalui parameter ppAsync . Struktur VDS_ASYNC_OUTPUT yang dikembalikan berisi penunjuk antarmuka objek volume di anggota cv.pVolumeUnk .

Sintaks

HRESULT CreateVolume(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [out] IVdsAsync       **ppAsync
);

Parameter

[in] type

Jenis volume yang dijumlahkan oleh VDS_VOLUME_TYPE. Volume pada disk dasar hanya dapat memiliki satu tingkat, dan hanya bendera VDS_VT_SIMPLE yang valid.

[in] pInputDiskArray

Penunjuk ke array struktur VDS_INPUT_DISK ; satu struktur untuk setiap disk. Disk hanya dapat disertakan dalam array sekali. Semua disk dalam array harus digunakan, atau metode gagal. Penelepon harus mengalokasikan dan menginisialisasi array, dan membebaskan memori saat panggilan kembali.

[in] lNumberOfDisks

Jumlah total disk yang berkontribusi pada volume.

Catatan VDS memberlakukan batas 32 disk pada volume spanned, striped, dan striped with parity (RAID-5).
 

[in] ulStripeSize

Jika volume bergaris, ukuran setiap strip dalam byte. Meneruskan byte nol untuk VDS_VT_SIMPLE, VDS_VT_SPAN, dan VDS_VT_MIRROR; 64 kilobyte untuk VDS_VT_STRIPE dan VDS_VT_PARITY.

[out] ppAsync

Alamat penunjuk antarmuka IVdsAsync , yang diinisialisasi VDS saat dikembalikan. Penelepon harus merilis antarmuka. Gunakan penunjuk ini untuk membatalkan, menunggu, atau mengkueri status operasi.

Jika Anda memanggil IVdsAsync::Wait pada metode ini dan nilai HRESULT yang berhasil dikembalikan, Anda harus merilis antarmuka yang dikembalikan dalam struktur VDS_ASYNC_OUTPUT dengan memanggil metode IUnknown::Release pada setiap pointer antarmuka. Namun, jika Wait mengembalikan nilai HRESULT kegagalan, atau jika parameter pHrResultWait menerima nilai HRESULT kegagalan, penunjuk antarmuka dalam struktur VDS_ASYNC_OUTPUT adalah NULL dan tidak perlu dirilis. Anda dapat menguji keberhasilan atau kegagalan nilai HRESULT dengan menggunakan makro BERHASIL dan GAGAL yang ditentukan dalam Winerror.h.

Nilai kembali

Metode ini dapat mengembalikan nilai HRESULT standar, seperti E_INVALIDARG atau E_OUTOFMEMORY, dan nilai pengembalian khusus VDS. Ini juga dapat mengembalikan kode kesalahan sistem yang dikonversi menggunakan makro HRESULT_FROM_WIN32 . Kesalahan dapat berasal dari VDS itu sendiri atau dari penyedia VDS yang mendasar yang sedang digunakan. Kemungkinan nilai yang dikembalikan termasuk yang berikut ini.

Mengembalikan kode/nilai Deskripsi
S_OK
Volume berhasil dibuat.
VDS_S_NO_NOTIFICATION
0x00042517L
Tidak ada pemberitahuan kedatangan volume yang diterima. Anda mungkin perlu memanggil IVdsService::Refresh.
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
Volume berhasil dibuat, tetapi VDS gagal memperbarui opsi boot di penyimpanan Boot Configuration Data (BCD).

Windows Server 2003: Opsi boot disimpan dalam file boot.ini pada sistem x86 atau x64 atau NVRAM pada sistem Itanium.

VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
Disk yang ditentukan bukan milik paket yang sama.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
Layanan LDM gagal dalam metode .
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
Ukuran jangkauan yang diteruskan terlalu kecil.
VDS_E_INVALID_DISK_COUNT
0x80042526L
Jumlah disk yang ditentukan tidak valid untuk operasi ini.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
Jumlah anggota untuk volume harus lebih besar dari nol.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Indeks anggota harus meningkat secara monoton dan dimulai dengan nol.
VDS_E_INVALID_OPERATION
0x80042415L
Disk yang diteruskan adalah perangkat CD-ROM atau DVD.
VDS_E_INVALID_PACK
0x8004251AL
Operasi ini tidak diperbolehkan pada paket disk ini.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
Jumlah pleks untuk volume harus lebih besar dari nol.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Indeks pleks harus meningkat secara monoton dan dimulai dengan nol.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
Ukuran stripe dalam byte harus berupa daya 2 untuk jenis volume bergaris dan RAID-5 dan harus nol untuk semua jenis volume lainnya.
VDS_E_MISSING_DISK
0x80042454L
Disk yang ditentukan hilang.
VDS_E_NO_MEDIA
0x80042412L
Tidak ada media dalam drive yang dapat dilepas yang diteruskan melalui array disk.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Ruang pada salah satu disk tidak cukup.
VDS_E_NOT_SUPPORTED
0x80042400L
Jenis volume tidak didukung, atau volume sudah ada pada disk yang dapat dilepas yang diteruskan ke metode . Disk yang dapat dilepas hanya dapat memiliki satu volume.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Setidaknya salah satu disk yang diteruskan tidak ditemukan.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Satu disk tidak dapat berkontribusi pada beberapa anggota atau beberapa pleks volume yang sama.
VDS_E_PACK_OFFLINE
0x80042444L
Paket target tidak dapat diakses.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
Jumlah maksimum partisi (partisi utama atau partisi utama dengan partisi yang diperluas) sudah ada ketika pemanggil mencoba membuat partisi utama tambahan atau partisi yang diperluas.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Cache penyedia dinamis rusak.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
Tidak lebih dari 32 disk diizinkan per volume.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
Ukuran volume terlalu kecil.

Keterangan

Catatan Metode ini tidak dapat digunakan untuk membuat volume pada disk yang dapat dilepas.
 
Penelepon menggunakan metode ini untuk membuat volume sederhana, membentang, bergaris, bergaris, atau bergaris dengan volume paritas (RAID-5) baru dalam paket saat ini. Volume sederhana dan terbenam memiliki tepat satu pleks dan satu anggota. Volume bergaris dan RAID-5 memiliki beberapa kolom dan anggota. Volume yang dicerminkan terdiri dari beberapa pleks.

Disk dasar hanya dapat berisi volume sederhana. Disk dinamis dapat berisi volume dari semua jenis selama sistem operasi mendukung operasi pengikatan; platform non-server tidak mendukung operasi pengikatan yang toleran terhadap kesalahan. Semua volume yang baru dibuat tidak memiliki huruf kandar.

Pada disk dasar, metode ini membuat partisi utama. Jika sudah ada tiga partisi utama pada disk, ia membuat partisi yang diperluas untuk mencakup ruang disk bebas berdekatan terbesar yang tersisa di disk, dan kemudian membuat drive logis dalam partisi yang diperluas.

Disk tidak dapat berkontribusi pada lebih dari satu pleks volume yang sama; namun, satu disk dapat berkontribusi pada beberapa volume. Volume sederhana hanya memiliki satu struktur VDS_INPUT_DISK , sedangkan volume spanned, striped, mirrored, dan RAID-5 memiliki satu struktur untuk setiap disk yang berkontribusi.

Ukuran disk yang ditentukan dalam struktur VDS_INPUT_DISK dapat berupa disk lengkap atau sebagian disk. Ketika dua disk membentuk volume cermin, VDS menggunakan disk terkecil untuk menghitung ukuran cermin. (Kebijakan penyedia menentukan offset, panjang, dan jumlah jangkauan disk aktual yang dialokasikan pada disk input tertentu.) Gunakan metode IVdsPack::QueryVolumes untuk menentukan ukuran volume yang dibuat.

Untuk membuat volume logis dengan parameter perataan opsional, gunakan metode IVdsPack2::CreateVolume2 atau gunakan kunci registri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment untuk menentukan nilai perataan dalam byte.

Windows 7, Windows Server 2008 R2, Windows Vista, dan Windows Server 2008: Pada disk dasar, metode CreateVolume mengabaikan kunci registri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Ini adalah masalah yang diketahui dan sedang ditangani. Sebagai solusinya, gunakan metode IVdsAdvancedDisk::CreatePartition atau IVdsCreatePartitionEx::CreatePartitionEx untuk membuat partisi pada disk dasar sehingga selaras dengan benar.

Partisi dan volume dinamis diselaraskan menggunakan nilai di bawah kunci registri berikut:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

Perataan default adalah 1 MB jika disk 4 GB atau lebih besar, atau 64 KB jika disk lebih kecil dari 4 GB.

Pelaksana harus mengembalikan penunjuk ke antarmuka IVdsAsync untuk metode ini, terlepas dari apakah panggilan memulai operasi asinkron.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header vds.h
Pustaka Uuid.lib

Lihat juga

IVdsAsync

IVdsAsync::Tunggu

IVdsPack

IVdsPack2::CreateVolume2

IVdsPack::QueryVolumes

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK

VDS_VOLUME_TYPE