Metode IVdsLun::SetMask (vdshwprv.h)

[Dimulai dengan Windows 8 dan Windows Server 2012, antarmuka COM Layanan Disk Virtual digantikan oleh API Manajemen Penyimpanan Windows.]

Menentukan daftar buka kemasan, yang merupakan daftar komputer yang akan diberikan akses ke LUN.

Sintaks

HRESULT SetMask(
  [in] LPWSTR pwszUnmaskingList
);

Parameter

[in] pwszUnmaskingList

Daftar yang menentukan komputer yang akan diberikan akses ke LUN. Daftar ini adalah string yang dibatasi titik koma, dihentikan NULL, dan dapat dibaca manusia.

Jika nilainya adalah "", semua komputer yang memiliki port HBA yang terpasang pada subsistem penyimpanan akan diberikan akses ke LUN.

Catatan Dalam praktiknya, jika nilainya adalah "", sebagian besar penyedia perangkat keras hanya memberikan port dan inisiator pada akses komputer lokal ke LUN.

 

Jika nilainya adalah "", akses dicabut untuk semua komputer yang sebelumnya diberikan akses ke LUN.

Jika "*" atau "" ditentukan, tidak ada nilai lain yang dapat ditentukan.

Untuk jaringan Fibre Channel dan jaringan SCSI (SAS) yang terpasang serial, setiap entri adalah World-Wide Name (WWN) 64-bit dari setiap port tempat LUN dibuka kemasnya, diformat sebagai string heksadesimal (panjang 16 karakter), byte paling signifikan terlebih dahulu. Misalnya, alamat WWN 01:23:45:67:89:AB:CD:EF dinyatakan sebagai "0123456789ABCDEF". Untuk informasi selengkapnya, lihat spesifikasi T10 untuk Fibre Channel dan SAS.

Untuk jaringan iSCSI, setiap entri adalah nama yang memenuhi syarat (IQN) iSCSI dari setiap inisiator tempat LUN dibongkar. LUN yang tidak dimasak ke inisiator tertentu dianggap terkait dengan inisiator tersebut.

Catatan Daftar buka kemasan dapat berisi WWN atau IQN yang sama lebih dari sekali. Pemanggil tidak diharapkan untuk menghapus duplikat dari daftar atau untuk memvalidasi format nama WWN atau iSCSI. Selain itu, akses tidak kumulatif. Dengan kata lain, jika metode ini dipanggil dua kali berturut-turut, hanya komputer yang ditentukan dalam panggilan kedua yang diberikan akses.
 

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. Nilai yang mungkin dikembalikan termasuk yang berikut ini.

Mengembalikan kode/nilai Deskripsi
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Nilai pengembalian ini menandakan masalah perangkat lunak atau komunikasi di dalam penyedia yang menyimpan informasi tentang array. Gunakan metode IVdsHwProvider::Reenumerate diikuti dengan metode IVdsHwProvider::Refresh untuk memulihkan cache.
VDS_E_OBJECT_DELETED
0x8004240BL
Objek LUN tidak lagi ada.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
LUN dalam status gagal, dan tidak dapat melakukan operasi yang diminta.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Operasi lain sedang berlangsung; operasi ini tidak dapat dilanjutkan sampai operasi atau operasi sebelumnya selesai.

Keterangan

Sebelum memanggil metode SetMask untuk menutupi LUN, pemanggil harus menghapus instalan disk yang sesuai sebagai berikut. Pertama, ambil ID objek VDS dari disk yang sesuai dengan LUN yang disembunyikan dengan memanggil IVdsServiceUninstallDisk::GetDiskIdFromLunInfo. Kemudian panggil IVdsServiceUninstallDisk::UninstallDisks dengan ID objek VDS disk.

Windows Server 2003 dan Windows Server 2003 dengan SP1: Untuk menghapus instalan disk yang sesuai, lakukan langkah-langkah berikut. Perhatikan bahwa langkah-langkah ini menjadi usang dengan Windows Server 2003 R2.

  1. Temukan volume pada disk yang akan ditutupi sebagai berikut:
    1. Untuk setiap disk, panggil metode IVdsDisk::QueryExtents untuk menghitung tingkat disk. Metode ini mengembalikan daftar struktur VDS_DISK_EXTENT . Anggota volumeId dari struktur ini berisi GUID volume.
    2. Hitung volume yang dikelola oleh penyedia perangkat lunak dengan memanggil metode IVdsSwProvider::QueryPacks untuk menghitung paket dan memanggil IVdsPack::QueryVolumes untuk menghitung volume di setiap paket. Panggil IVdsVolume::GetProperties untuk mendapatkan struktur VDS_VOLUME_PROP untuk setiap volume. Anggota id dari struktur ini berisi GUID volume. Anggota pwszName berisi nama volume yang akan diteruskan ke CreateFile untuk mendapatkan handel volume.
    3. Gunakan GUID volume yang diperoleh dengan memanggil IVdsDisk::QueryExtents untuk menentukan nama volume mana yang akan Anda butuhkan dari daftar volume yang dijumlahkan.
  2. Kunci setiap volume dengan menggunakan kode kontrol FSCTL_LOCK_VOLUME . Jika LUN dipindahkan ke komputer lain sebagai volume utuh, dan aplikasi lain memegang kunci volume, Anda harus mencoba kembali operasi FSCTL_LOCK_VOLUME jika memungkinkan sebelum melanjutkan ke langkah berikutnya. Namun, jika volume hanya dikunci dan dilepas karena sedang dihapus, tidak perlu mencoba kembali operasi FSCTL_LOCK_VOLUME .
    Catatan Langkah ini bersifat opsional. Tujuan dari langkah ini adalah untuk memungkinkan aplikasi lain yang dapat menahan kunci untuk melepaskannya. Bahkan jika operasi penguncian gagal, Anda harus melanjutkan ke langkah berikutnya.
     
  3. Lepaskan setiap volume dengan menggunakan kode kontrol FSCTL_DISMOUNT_VOLUME .
  4. Jika volume berada pada disk dasar, buat volume offline dengan menggunakan kode kontrol IOCTL_VOLUME_OFFLINE .
  5. Hapus instalan setiap volume menggunakan fungsi SetupDiCallClassInstaller , meneruskan DIF_REMOVE untuk parameter InstallFunction .
  6. Hapus instalan setiap disk menggunakan fungsi SetupDiCallClassInstaller , meneruskan DIF_REMOVE untuk parameter InstallFunction .
  7. Hapus jalur mode pengguna, seperti folder yang dipasang dan penetapan drive-letter, dari registri dengan memanggil metode IVdsService::CleanupObsoleteMountPoints .

Setelah LUN dicabut ke mesin target atau ditutupi dari mesin target, visibilitas LUN pada mesin tersebut mungkin tidak berubah sampai proses memula ulang bus dilakukan. Aplikasi VDS pada komputer target memulai pemulaian ulang bus dengan memanggil IVdsService::Reenumerate. Memulai pemulaian ulang bus adalah tanggung jawab aplikasi VDS, bukan penyedia perangkat keras.

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 vdshwprv.h
Pustaka Uuid.lib

Lihat juga

IVdsHwProvider::Hitung ulang

IVdsHwProvider::Refresh

IVdsLun