IVdsLun::SetMask-Methode (vdshwprv.h)

[Ab Windows 8 und Windows Server 2012 wird die COM-Schnittstelle des Virtuellen Datenträgerdiensts durch die Windows Storage Management-API ersetzt.]

Gibt die Entlarmungsliste an, d. h. die Liste der Computer, die Zugriff auf die LUN erhalten sollen.

Syntax

HRESULT SetMask(
  [in] LPWSTR pwszUnmaskingList
);

Parameter

[in] pwszUnmaskingList

Eine Liste, die die Computer angibt, die Zugriff auf die LUN erhalten sollen. Die Liste ist eine semikolontrennende, NULL-beendete, für Menschen lesbare Zeichenfolge.

Wenn der Wert "" ist, soll allen Computern, die über einen HBA-Port verfügen, der an das Speichersubsystem angefügt ist, Zugriff auf die LUN gewährt werden.

Hinweis Wenn der Wert "" lautet, gewähren die meisten Hardwareanbieter in der Praxis nur den Ports und Initiatoren auf dem lokalen Computer Zugriff auf die LUN.

 

Wenn der Wert "" ist, wird der Zugriff für alle Computer widerrufen, denen zuvor Zugriff auf die LUN gewährt wurde.

Wenn "*" oder "" angegeben ist, kann kein anderer Wert angegeben werden.

Für Fibre Channel-Netzwerke und sas-Netzwerke (Serial Attached SCSI) ist jeder Eintrag ein 64-Bit World Wide Name (WWN) jedes Ports, an den die LUN entmasket ist, und formatiert als hexadezimale Zeichenfolge (16 Zeichen lang), wobei das wichtigste Byte zuerst ist. Beispielsweise wird eine WWN-Adresse von 01:23:45:67:89:AB:CD:EF als "0123456789ABCDEF" dargestellt. Weitere Informationen finden Sie in den T10-Spezifikationen für Fibre Channel und SAS.

Bei iSCSI-Netzwerken ist jeder Eintrag ein iSCSI-qualifizierter Name (IQN) jedes Initiators, für den die LUN enttarnt wird. Eine LUN, die einem bestimmten Initiator enttarnt wurde, gilt als mit diesem Initiator verknüpft.

Hinweis Die Entlarmungsliste kann denselben WWN oder IQN mehr als einmal enthalten. Es wird nicht erwartet, dass der Aufrufer Duplikate aus der Liste entfernt oder das Format des WWN- oder iSCSI-Namens überprüft. Außerdem ist der Zugriff nicht kumulativ. Anders ausgedrückt: Wenn diese Methode zweimal hintereinander aufgerufen wird, wird nur den im zweiten Aufruf angegebenen Computern Zugriff gewährt.
 

Rückgabewert

Diese Methode kann HRESULT-Standardwerte wie E_INVALIDARG oder E_OUTOFMEMORY und VDS-spezifische Rückgabewerte zurückgeben. Es kann auch konvertierte Systemfehlercodes mithilfe des HRESULT_FROM_WIN32-Makros zurückgeben. Fehler können vom VDS selbst oder vom zugrunde liegenden VDS-Anbieter stammen, der verwendet wird. Folgende Rückgabewerte sind möglich.

Rückgabecode/-wert BESCHREIBUNG
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Dieser Rückgabewert signalisiert ein Software- oder Kommunikationsproblem innerhalb eines Anbieters, der Informationen zum Array zwischenspeichert. Verwenden Sie die IVdsHwProvider::Reenumerate-Methode gefolgt von der IVdsHwProvider::Refresh-Methode , um den Cache wiederherzustellen.
VDS_E_OBJECT_DELETED
0x8004240BL
Das LUN-Objekt ist nicht mehr vorhanden.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
Die LUN ist fehlerhaft und kann den angeforderten Vorgang nicht ausführen.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Ein weiterer Vorgang wird ausgeführt. Dieser Vorgang kann erst fortgesetzt werden, wenn der vorherige Vorgang oder die vorherigen Vorgänge abgeschlossen sind.

Hinweise

Vor dem Aufrufen der SetMask-Methode zum Maskieren einer LUN sollte der Aufrufer die entsprechenden Datenträger wie folgt deinstallieren. Rufen Sie zunächst die VDS-Objekt-ID des Datenträgers ab, der der maskierten LUN entspricht, indem Sie IVdsServiceUninstallDisk::GetDiskIdFromLunInfo aufrufen. Rufen Sie dann IVdsServiceUninstallDisk::UninstallDisks mit der VDS-Objekt-ID des Datenträgers auf.

Windows Server 2003 und Windows Server 2003 mit SP1: Führen Sie die folgenden Schritte aus, um die entsprechenden Datenträger zu deinstallieren. Beachten Sie, dass diese Schritte mit Windows Server 2003 R2 veraltet sind.

  1. Suchen Sie die Volumes auf den Datenträgern, die maskiert werden sollen, wie folgt:
    1. Rufen Sie für jeden Datenträger die IVdsDisk::QueryExtents-Methode auf, um die Datenträgerausdehnungen aufzulisten. Diese Methode gibt eine Liste von VDS_DISK_EXTENT Strukturen zurück. Das volumeId-Element dieser Struktur enthält die Volume-GUID.
    2. Zählen Sie die vom Softwareanbieter verwalteten Volumes auf, indem Sie die IVdsSwProvider::QueryPacks-Methode aufrufen, um die Pakete aufzulisten, und rufen Sie IVdsPack::QueryVolumes auf, um die Volumes in jedem Pack aufzulisten. Rufen Sie IVdsVolume::GetProperties auf, um die VDS_VOLUME_PROP-Struktur für jedes Volume abzurufen. Das ID-Element dieser Struktur enthält die Volume-GUID. Das pwszName-Element enthält den Volumenamen, der an CreateFile übergeben werden soll, um ein Volumehandle abzurufen.
    3. Verwenden Sie die Volume-GUIDs, die durch aufrufen von IVdsDisk::QueryExtents abgerufen wurden, um zu bestimmen, welche der Volumenamen Sie aus der Liste der aufgezählten Volumes benötigen.
  2. Sperren Sie jedes Volume mithilfe des FSCTL_LOCK_VOLUME-Steuerelementcodes . Wenn die LUN als intaktes Volume auf einen anderen Computer verschoben wird und eine andere Anwendung eine Volumesperre enthält, sollten Sie den FSCTL_LOCK_VOLUME Vorgang nach Möglichkeit wiederholen, bevor Sie mit dem nächsten Schritt fortfahren. Wenn das Volume jedoch nur gesperrt und aufgehoben wird, weil es gelöscht wird, ist es nicht erforderlich, den vorgang FSCTL_LOCK_VOLUME erneut auszuführen.
    Hinweis Dieser Schritt ist optional. Der Zweck dieses Schritts besteht darin, anderen Anwendungen, die möglicherweise Sperren enthalten, zu erlauben, sie freizugeben. Auch wenn der Sperrvorgang fehlschlägt, sollten Sie mit dem nächsten Schritt fortfahren.
     
  3. Heben Sie die Bereitstellung jedes Volumes mithilfe des FSCTL_DISMOUNT_VOLUME-Steuerelementcodes auf.
  4. Wenn sich die Volumes auf Basisdatenträgern befinden, können Sie sie mithilfe des IOCTL_VOLUME_OFFLINE-Steuerungscodes offline schalten.
  5. Deinstallieren Sie jedes Volume mithilfe der SetupDiCallClassInstaller-Funktion , und übergeben Sie DIF_REMOVE für den InstallFunction-Parameter .
  6. Deinstallieren Sie jeden Datenträger mithilfe der SetupDiCallClassInstaller-Funktion , und übergeben Sie DIF_REMOVE für den InstallFunction-Parameter .
  7. Entfernen Sie Benutzermoduspfade, z. B. eingebundene Ordner und Laufwerkbuchstabenzuweisungen, aus der Registrierung, indem Sie die IVdsService::CleanupObsoleteMountPoints-Methode aufrufen.

Nachdem eine LUN auf einem Zielcomputer enttarnt oder von einem Zielcomputer maskiert wurde, ändert sich die Sichtbarkeit der LUN auf diesem Computer möglicherweise erst, wenn ein erneuter Busscan ausgeführt wird. Die VDS-Anwendung auf dem Zielcomputer initiiert den erneuten Busscan, indem sie IVdsService::Reenumerate aufruft. Die Einleitung des Busrescans liegt in der Verantwortung der VDS-Anwendung, nicht des Hardwareanbieters.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile vdshwprv.h
Bibliothek Uuid.lib

Weitere Informationen

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun