IoCheckLinkShareAccess-Funktion (wdm.h)

Die IoCheckLinkShareAccess-Routine wird von Dateisystemtreibern (FSDs) oder anderen Treibern auf höchster Ebene aufgerufen, um zu überprüfen, ob der link freigegebene Zugriff auf ein Dateiobjekt zulässig ist.

Syntax

NTSTATUS IoCheckLinkShareAccess(
  [in]                ACCESS_MASK        DesiredAccess,
  [in]                ULONG              DesiredShareAccess,
  [in, out, optional] PFILE_OBJECT       FileObject,
  [in, out, optional] PSHARE_ACCESS      ShareAccess,
  [in, out, optional] PLINK_SHARE_ACCESS LinkShareAccess,
  [in]                ULONG              IoShareAccessFlags
);

Parameter

[in] DesiredAccess

Gibt einen ACCESS_MASK Wert an, der den gewünschten Zugriffstyp für das angegebene Dateiobjekt angibt.

[in] DesiredShareAccess

Gibt den gewünschten Typ des freigegebenen Zugriffs auf das Dateiobjekt für die aktuelle offene Anforderung an. Der Wert dieses Parameters entspricht in der Regel dem ShareAccess-Parameter , der an das Dateisystem oder den höchsten Treiber des I/O-Managers übergeben wird, wenn die offene Anforderung vorgenommen wurde. Dieser Wert kann null oder eine beliebige Kombination aus folgenden Kombinationen sein:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out, optional] FileObject

Ein Zeiger auf das Dateiobjekt, für das der Zugriff auf die aktuelle geöffnete Anforderung überprüft werden soll.

[in, out, optional] ShareAccess

Ein Zeiger auf die gemeinsame Share-Access-Datenstruktur, die dem FileObject zugeordnet ist. Treiber sollten diese Struktur als undurchsichtig behandeln.

[in, out, optional] LinkShareAccess

Ein Zeiger auf die allgemeine Linkfreigabedatenstruktur (LINK_SHARE_ACCESS), die dem FileObject zugeordnet ist. Treiber sollten diese Struktur als undurchsichtig behandeln.

[in] IoShareAccessFlags

Ein Bitmask dieser Flags:

IO_SHARE_ACCESS_NO_WRITE_PERMISSION (0x80000000) gibt an, dass der Benutzer keine Schreibberechtigung für die Datei hat. Dieses Flag wird verwendet, um zu verhindern, dass eine Datei für den exklusiven Lesezugriff geöffnet wird, wenn der Benutzer keine entsprechenden Berechtigungen hat.

IO_SHARE_ACCESS_NON_PRIMARY_STREAM (0x00000080) gibt an, dass der Datenstrom weder der primäre Datenstrom noch ein Verzeichnisdatenstrom ist.

IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS (0x00000001) gibt an, ob die SHARE_ACCESS Struktur aktualisiert wird.

IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT (0x00000002) gibt an, FILE_OBJECT Struktur nicht zu aktualisieren.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ (0x00000004) gibt an, den Lesezugriff nicht zu überprüfen.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE (0x00000008) gibt an, den Schreibzugriff nicht zu überprüfen.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) gibt an, den Freigabezugriff nicht zu überprüfen.

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) gibt an, den Freigabezugriff zu erzwingen, auch wenn die Anforderung keinen Lese-/Schreib-/Löschzugriff hat.

IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) gibt an, den Löschen des Freigabezugriffs mithilfe von ShareAccess zu erzwingen, unabhängig davon, ob LinkShareAccess vorhanden ist oder nicht.

Rückgabewert

Die IoCheckLinkShareAccess-Routine gibt STATUS_SUCCESS zurück, wenn der Zugriff des Anforderungsobjekts mit der Art und Weise kompatibel ist, in der es derzeit geöffnet ist. Wenn die Anforderung wegen einer Freigabeverletzung verweigert wird, wird STATUS_SHARING_VIOLATION zurückgegeben.

Bemerkungen

Der ShareAccess-Parameter muss gegen andere Zugriffe aus anderen Threads gesperrt werden, während diese Routine ausgeführt wird. Andernfalls kann die Synchronisierung erfolgen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10, Version 1709
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Universell
Header wdm.h
Bibliothek Ntoskrnl.lib

Siehe auch

I/O-Manager-Routinen

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess