IoCheckShareAccess-Funktion (wdm.h)

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

Syntax

NTSTATUS IoCheckShareAccess(
  [in]      ACCESS_MASK   DesiredAccess,
  [in]      ULONG         DesiredShareAccess,
  [in, out] PFILE_OBJECT  FileObject,
  [in, out] PSHARE_ACCESS ShareAccess,
  [in]      BOOLEAN       Update
);

Parameter

[in] DesiredAccess

Gibt einen ACCESS_MASK Wert an, der den gewünschten Zugriffstyp für das angegebene FileObject für die aktuelle offene Anforderung angibt. Treiber berechnen den Wert dieses Parameters, indem Sie den angeforderten Zugriff in der IRP_MJ_CREATE-Anforderung ausführen und dann SeAccessCheck für jeden Sicherheitsdeskriptor anwenden, um den tatsächlichen Zugriff zu ermitteln. Wenn der gewährte Zugriff restriktiver als der gewünschte Zugriff ist, sollte der Treiber den aktuellen IRP mit einem Status von STATUS_ACCESS_DENIED abschließen. (Beachten Sie, dass SeAccessCheck das MAXIMUM_ALLOWED Bit im gewährten Zugriff deaktiviert; achten Sie darauf, dieses Bit beim Vergleich des gewünschten Zugriffs auf gewährten Zugriff nicht zu verwenden.) Der Treiber übergibt dann den gewährten Zugriff als Wert von DesiredAccess.

[in] DesiredShareAccess

Gibt den gewünschten Typ des freigegebenen Zugriffs auf FileObject für die aktuelle offene Anforderung an. Der Wert dieses Parameters ist in der Regel identisch mit dem ShareAccess , der an das Dateisystem oder den treiber auf höchster Ebene vom I/O-Manager übergeben wurde, 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] FileObject

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

[in, out] ShareAccess

Zeiger auf die allgemeine Datenstruktur für den Share-Access, die mit FileObject verknüpft ist. Treiber sollten diese Struktur als undurchsichtig behandeln.

[in] Update

Gibt an, ob der Share-Access-Status für FileObject aktualisiert werden soll. Ein boolescher Wert von TRUE bedeutet, dass diese Routine die Freigabezugriffsinformationen für das Dateiobjekt aktualisiert, wenn die offene Anforderung zulässig ist.

Rückgabewert

IoCheckShareAccess gibt STATUS_SUCCESS zurück, wenn der Zugriff des Anforderungsgebers auf das Dateiobjekt 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

IoCheckShareAccess überprüft eine offene Dateiobjektanforderung, um festzustellen, ob die angegebenen Typen von gewünschten und freigegebenen Zugriffen mit der Art und Weise kompatibel sind, auf die das Dateiobjekt derzeit von anderen Geöffneten zugegriffen wird.

Dateisysteme verwalten den Zustand von Dateien über Strukturen namens Dateisteuerelementblöcke (FCBs). Die SHARE_ACCESS ist eine Struktur, in der beschrieben wird, wie die Datei derzeit von allen geöffneten Geöffneten zugegriffen wird. Dieser Zustand ist im FCB als Teil des geöffneten Zustands für jedes Dateiobjekt enthalten. Jedes Dateiobjekt sollte nur eine Freigabezugriffsstruktur aufweisen. Andere Treiber auf höchster Ebene rufen diese Routine auf, um den Zugriff zu überprüfen, wenn ein Dateiobjekt, das das Geräteobjekt eines solchen Treibers darstellt, geöffnet wird.

IoCheckShareAccess ist kein Atomvorgang. Daher müssen Treiber, die diese Routine aufrufen, das das freigegebene Dateiobjekt schützen muss, das an IoCheckShareAccess übergeben wurde, durch eine Art von Sperrung, z. B. eine Mutex- oder eine Ressourcensperre, um die Korruption der freigegebenen Zugriffsanzahl zu verhindern.

Anforderungen

   
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (enthalten Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm)

Weitere Informationen

ACCESS_MASK

IoCreateFile

IoCreateFileEx

IoGetObjectDeviceObject

IoRemoveShareAccess

IoSetShareAccess

IoUpdateShareAccess