IVdsLun::SetMask-Methode (vds.h)

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

Gibt die Demassierungsliste an. Dies ist die Liste der Computer, denen Zugriff auf die LUN gewährt werden soll.

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 durch Semikolons getrennte, NULL-endende, für Menschen lesbare Zeichenfolge.

Wenn der Wert "" ist, muss 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.

Bei Fibre Channel-Netzwerken und serial angefügten SCSI-Netzwerken (SAS) ist jeder Eintrag ein 64-Bit World Wide Name (WWN) jedes Ports, an den die LUN entmasket ist, formatiert als hexadezimale Zeichenfolge (16 Zeichen lang), wobei zuerst das wichtigste Byte vorhanden 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 entmasket ist. Eine LUN, die einem bestimmten Initiator entlarvt wurde, gilt als mit diesem Initiator verknüpft.

Hinweis Die Entlarmungsliste kann mehrmals denselben WWN oder IQN enthalten. Es wird nicht erwartet, dass der Aufrufer Duplikate aus der Liste entfernt oder das Format des WWN- oder iSCSI-Namens überprüft. Darüber hinaus 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 makros HRESULT_FROM_WIN32 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 über das 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 weist einen Fehlerstatus auf 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 abgeschlossen ist.

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 zu 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 wie folgt maskiert werden sollen:
    1. Rufen Sie für jeden Datenträger die IVdsDisk::QueryExtents-Methode auf, um die Datenträgerblöcke aufzulisten. Diese Methode gibt eine Liste von VDS_DISK_EXTENT Strukturen zurück. Das volumeId-Element dieser Struktur enthält die Volume-GUID.
    2. Enumerieren Sie die vom Softwareanbieter verwalteten Volumes, indem Sie die IVdsSwProvider::QueryPacks-Methode aufrufen, um die Pakete aufzulisten, und rufen Sie IVdsPack::QueryVolumes auf, um die Volumes in jedem Paket aufzulisten. Rufen Sie IVdsVolume::GetProperties auf, um die VDS_VOLUME_PROP-Struktur für jedes Volume abzurufen. Der Id-Member dieser Struktur enthält die Volume-GUID. Das pwszName-Element enthält den Volumenamen, der an CreateFile übergeben werden soll, um ein Volumehandle zu erhalten.
    3. Verwenden Sie die Volume-GUIDs, die durch Aufrufen von IVdsDisk::QueryExtents abgerufen wurden, um zu bestimmen, welche volumenamen Sie aus der Liste der aufgezählten Volumes benötigen.
  2. Sperren Sie jedes Volume mithilfe des FSCTL_LOCK_VOLUME-Steuerungscodes. Wenn die LUN als intaktes Volume auf einen anderen Computer verschoben wird und eine andere Anwendung über eine Volumesperre verfügt, 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 die Bereitstellung aufgehoben wird, weil es gelöscht wird, ist es nicht erforderlich, den FSCTL_LOCK_VOLUME Vorgang erneut zu versuchen.
    Hinweis Dieser Schritt ist optional. Der Zweck dieses Schritts besteht darin, anderen Anwendungen, die möglicherweise Sperren enthalten, das Freigeben zu ermöglichen. 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, schalten Sie sie mithilfe des IOCTL_VOLUME_OFFLINE Steuercodes offline.
  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 Pfade im Benutzermodus, 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 durchgeführt wird. Die VDS-Anwendung auf dem Zielcomputer initiiert den erneuten Busscan, indem IVdsService::Reenumerate aufgerufen wird. Die Einleitung der erneuten Überprüfung des Busses 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 vds.h
Bibliothek Uuid.lib

Weitere Informationen

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun