Метод IVdsLun::SetMask (vdshwprv.h)
[Начиная с Windows 8 и Windows Server 2012 COM-интерфейс службы виртуальных дисков замечается API управления хранилищем Windows.]
Указывает список распаковки, который представляет собой список компьютеров, которым будет предоставлен доступ к LUN.
HRESULT SetMask(
[in] LPWSTR pwszUnmaskingList
);
[in] pwszUnmaskingList
Список, указывающий компьютеры, которым будет предоставлен доступ к LUN. Список представляет собой удобочитаемую строку с разделителями точками с запятой, завершаемую значением NULL.
Если значение равно "", всем компьютерам с портом HBA, подключенным к подсистеме хранения, должен быть предоставлен доступ к LUN.
Если значение равно "", доступ отменяется для всех компьютеров, которым ранее был предоставлен доступ к LUN.
Если задано значение "*" или "", другое значение не может быть указано.
Для сетей Fibre Channel и сетей с последовательным подключением SCSI (SAS) каждая запись представляет собой 64-разрядное имя (WWN) каждого порта, к которому не маскируется LUN, отформатированная в виде шестнадцатеричной строки (длиной 16 символов), наиболее важной из которых является байт. Например, адрес WWN 01:23:45:67:89:AB:CD:EF представлен как "0123456789ABCDEF". Дополнительные сведения см. в спецификациях T10 для Fibre Channel и SAS.
Для сетей iSCSI каждая запись представляет собой полное имя iSCSI (IQN) каждого инициатора, которому не маскируется LUN. Считается, что lun, не маски для определенного инициатора, связан с этим инициатором.
Этот метод может возвращать стандартные значения HRESULT , такие как E_INVALIDARG или E_OUTOFMEMORY, а также возвращаемые значения VDS. Он также может возвращать преобразованные коды системных ошибок с помощью макроса HRESULT_FROM_WIN32 . Ошибки могут возникать из самого VDS или из используемого базового поставщика VDS . Возможные возвращаемые значения включают следующие.
Возвращаемый код или значение | Описание |
---|---|
|
Это возвращаемое значение сигнализирует о проблеме программного обеспечения или связи внутри поставщика, который кэширует сведения о массиве. Для восстановления кэша используйте метод IVdsHwProvider::Reenumerate , за которым следует метод IVdsHwProvider::Refresh . |
|
Объект LUN больше не присутствует. |
|
LUN находится в состоянии сбоя и не может выполнить запрошенную операцию. |
|
Выполняется другая операция; Эта операция не может продолжаться до завершения предыдущей операции или операций. |
Перед вызовом метода SetMask для маскирования LUN вызывающий объект должен удалить соответствующие диски следующим образом. Сначала получите идентификатор объекта VDS диска, соответствующего маскированному LUN, вызвав IVdsServiceUninstallDisk::GetDiskIdFromLunInfo. Затем вызовите IVdsServiceUninstallDisk::UninstallDisks с идентификатором объекта VDS диска.
Windows Server 2003 и Windows Server 2003 с пакетом обновления 1 (SP1): Чтобы удалить соответствующие диски, выполните следующие действия. Обратите внимание, что эти шаги устарели в Windows Server 2003 R2.
- Найдите тома на дисках, которые будут маскироваться, следующим образом:
- Для каждого диска вызовите метод IVdsDisk::QueryExtents , чтобы перечислить экстенты диска. Этот метод возвращает список VDS_DISK_EXTENT структур. Элемент volumeId этой структуры содержит guid тома.
- Перечисление томов, управляемых поставщиком программного обеспечения, путем вызова метода IVdsSwProvider::QueryPacks для перечисления пакетов и вызова IVdsPack::QueryVolumes для перечисления томов в каждом пакете. Вызовите IVdsVolume::GetProperties , чтобы получить структуру VDS_VOLUME_PROP для каждого тома. Элемент id этой структуры содержит GUID тома. Элемент pwszName содержит имя тома, передаваемое в CreateFile для получения дескриптора тома.
- Используйте идентификаторы GUID тома, полученные путем вызова IVdsDisk::QueryExtents , чтобы определить, какие имена томов потребуются из списка перечисляемых томов.
- Блокировка каждого тома с помощью кода элемента управления FSCTL_LOCK_VOLUME . Если LUN перемещается на другой компьютер как нетронутый том, а другое приложение удерживает блокировку тома, по возможности повторите операцию FSCTL_LOCK_VOLUME , прежде чем переходить к следующему шагу. Однако если том блокируется и отключается только из-за удаления, нет необходимости повторять операцию FSCTL_LOCK_VOLUME .
Примечание Этот шаг является необязательным. Цель этого шага — разрешить другим приложениям, которые могут содержать блокировки, освобождать их. Даже если операция блокировки завершится сбоем, следует перейти к следующему шагу.
- Отключите каждый том с помощью кода элемента управления FSCTL_DISMOUNT_VOLUME .
- Если тома находятся на базовых дисках, переведите их в автономный режим с помощью кода управления IOCTL_VOLUME_OFFLINE .
- Удалите каждый том с помощью функции SetupDiCallClassInstaller , передав DIF_REMOVE для параметра InstallFunction .
- Удалите каждый диск с помощью функции SetupDiCallClassInstaller , передав DIF_REMOVE для параметра InstallFunction .
- Удалите пути в пользовательском режиме, такие как подключенные папки и назначения букв диска, из реестра, вызвав метод IVdsService::CleanupObsoleteMountPoints .
После распаковки LUN на целевом компьютере или маскирования с целевого компьютера видимость LUN на этом компьютере может не измениться, пока не будет выполнено повторное сканирование шины. Приложение VDS на целевом компьютере инициирует повторное сканирование шины, вызывая IVdsService::Reenumerate. За инициализацию повторного сканирования шины отвечает приложение VDS, а не поставщик оборудования.
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | vdshwprv.h |
Библиотека | Uuid.lib |