Метод IVdsLun::SetMask (vds.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 | vds.h |
Библиотека | Uuid.lib |