Condividi tramite


Funzione IoCheckLinkShareAccess (wdm.h)

La routine IoCheckLinkShareAccess viene chiamata dai driver del file system (FSD) o da altri driver di livello più alto per verificare se è consentito collegare l'accesso condiviso a un oggetto file.

Sintassi

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
);

Parametri

[in] DesiredAccess

Specifica un valore ACCESS_MASK che indica il tipo di accesso desiderato all'oggetto file specificato.

[in] DesiredShareAccess

Specifica il tipo desiderato di accesso condiviso all'oggetto file per la richiesta aperta corrente. Il valore di questo parametro è in genere lo stesso del parametro ShareAccess passato al file system o al driver di livello più alto dal gestore di I/O quando è stata effettuata la richiesta aperta. Questo valore può essere zero o qualsiasi combinazione di quanto segue:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out, optional] FileObject

Puntatore all'oggetto file per il quale controllare l'accesso per la richiesta aperta corrente.

[in, out, optional] ShareAccess

Puntatore alla struttura dei dati di accesso condiviso comune associata a FileObject. I driver devono considerare questa struttura come opaca.

[in, out, optional] LinkShareAccess

Puntatore alla struttura dei dati di accesso condiviso di collegamento comune (LINK_SHARE_ACCESS) associata a FileObject. I driver devono considerare questa struttura come opaca.

[in] IoShareAccessFlags

Maschera di bit di questi flag:

IO_SHARE_ACCESS_NO_WRITE_PERMISSION (0x80000000) specifica che l'utente non dispone dell'autorizzazione di scrittura per il file. Questo flag viene usato per impedire l'apertura di un file per l'accesso in lettura esclusivo quando l'utente non dispone delle autorizzazioni appropriate.

IO_SHARE_ACCESS_NON_PRIMARY_STREAM (0x00000080) specifica che il flusso non è né il flusso di dati primario né un flusso di directory.

IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS (0x00000001) indica se la struttura SHARE_ACCESS viene aggiornata.

IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT (0x00000002) indica di non aggiornare FILE_OBJECT struttura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ (0x00000004) indica di non controllare l'accesso in lettura alla condivisione.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE (0x00000008) indica di non controllare l'accesso alla condivisione di scrittura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) indica di non controllare l'accesso alla condivisione di eliminazione.

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) indicano di forzare il controllo dell'accesso alla condivisione anche se la richiesta non è accesso in lettura/scrittura/eliminazione.

IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) indica di forzare il controllo dell'accesso alla condivisione di eliminazione tramite ShareAccess indipendentemente dal fatto che LinkShareAccess sia presente o meno.

Valore restituito

La routine IoCheckLinkShareAccess restituisce STATUS_SUCCESS se l'accesso del richiedente all'oggetto file è compatibile con il modo in cui è attualmente aperto. Se la richiesta viene negata a causa di una violazione di condivisione, viene restituita STATUS_SHARING_VIOLATION.

Commenti

Il parametro ShareAccess deve essere bloccato su altri accessi da altri thread durante l'esecuzione di questa routine. In caso contrario, i conteggi possono essere sincronizzati.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1709
Server minimo supportato Windows Server 2016
Piattaforma di destinazione Universale
Intestazione wdm.h
Libreria Ntoskrnl.lib

Vedi anche

Routine di I/O Manager

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess