Freigeben über


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 übernehmen und dann SeAccessCheck- für jeden Sicherheitsdeskriptor anwenden, um den tatsächlich gewährten Zugriff zu bestimmen. Wenn der gewährte Zugriff restriktiver als der gewünschte Zugriff ist, ist dies ein Fehler, und der Treiber sollte den aktuellen IRP mit dem Status STATUS_ACCESS_DENIED abschließen. (Beachten Sie, dass SeAccessCheck das MAXIMUM_ALLOWED Bit im gewährten Zugriff löscht. Achten Sie darauf, dieses Bit nicht zu verwenden, wenn Sie den gewünschten Zugriff mit dem gewährten Zugriff vergleichen.) 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 an das Dateisystem oder den Treiber der höchsten Ebene vom E/A-Manager übergeben, wenn die offene Anforderung gestellt wurde. Dieser Wert kann null oder eine beliebige Kombination der folgenden Werte sein:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out] FileObject

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

[in, out] ShareAccess

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

[in] Update

Gibt an, ob der Freigabezugriffsstatus 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 Antragstellers auf das Dateiobjekt mit der Art und Weise kompatibel ist, in der es derzeit geöffnet ist. Wenn die Anforderung aufgrund eines Freigabeverstoßes verweigert wird, wird STATUS_SHARING_VIOLATION zurückgegeben.

Bemerkungen

IoCheckShareAccess überprüft eine geöffnete Dateiobjektanforderung, um zu bestimmen, ob die angegebenen Typen von gewünschten und freigegebenen Zugriffen mit der Art kompatibel sind, in der das Dateiobjekt derzeit von anderen geöffnet wird.

Dateisysteme verwalten den Zustand von Dateien über Strukturen, die als Dateisteuerungsblöcke (File Control Blocks, FCBs) bezeichnet werden. Die SHARE_ACCESS ist eine Struktur, die beschreibt, wie auf die Datei derzeit über alle 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 der höchsten Ebene rufen diese Routine möglicherweise auf, um den zugriff zu überprüfen, der angefordert wurde, wenn ein Dateiobjekt, das das Geräteobjekt eines solchen Treibers darstellt, geöffnet wird.

IoCheckShareAccess- ist keine Atomoperation. Daher müssen Treiber, die diese Routine aufrufen, das freigegebene Dateiobjekt schützen, das an IoCheckShareAccess durch eine Art von Sperre, z. B. einen Mutex oder eine Ressourcensperre, übergeben wird, um beschädigungen der Anzahl des freigegebenen Zugriffs zu verhindern.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm)

Siehe auch

ACCESS_MASK

IoCreateFile-

IoCreateFileEx-

IoGetRelatedDeviceObject

IoRemoveShareAccess-

IoSetShareAccess-

IoUpdateShareAccess-