Funzione IoCheckShareAccess (wdm.h)

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

Sintassi

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

Parametri

[in] DesiredAccess

Specifica un valore ACCESS_MASK che indica il tipo di accesso desiderato all'oggetto FileObject specificato per la richiesta aperta corrente. I driver calcolano il valore di questo parametro prendendo l'accesso richiesto nella richiesta di IRP_MJ_CREATE e quindi applicando SeAccessCheck per ogni descrittore di sicurezza per determinare l'accesso effettivo concesso. Se l'accesso concesso è più restrittivo dell'accesso desiderato, si tratta di un errore e il driver deve completare l'IRP corrente con stato di STATUS_ACCESS_DENIED. Si noti che SeAccessCheck cancella il bit di MAXIMUM_ALLOWED nell'accesso concesso; assicurarsi di non usare tale bit quando si confronta l'accesso desiderato all'accesso concesso. Il driver passa quindi l'accesso concesso come valore di DesiredAccess.

[in] DesiredShareAccess

Specifica il tipo desiderato di accesso condiviso a FileObject per la richiesta aperta corrente. Il valore di questo parametro è in genere uguale a 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 dei seguenti elementi:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out] FileObject

Puntatore all'oggetto file per cui controllare l'accesso alla richiesta aperta corrente.

[in, out] ShareAccess

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

[in] Update

Specifica se aggiornare lo stato di accesso condiviso per FileObject. Un valore booleano di TRUE indica che questa routine aggiornerà le informazioni di accesso di condivisione per l'oggetto file se la richiesta aperta è consentita.

Valore restituito

IoCheckShareAccess 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, STATUS_SHARING_VIOLATION viene restituita.

Commenti

IoCheckShareAccess controlla una richiesta aperta di un oggetto file per determinare se i tipi di accessi desiderati e condivisi specificati sono compatibili con il modo in cui l'oggetto file è attualmente accessibile da altri elementi.

I file system mantengono lo stato sui file tramite strutture denominate blocchi di controllo file (FCB). Il SHARE_ACCESS è una struttura che descrive come il file è attualmente accessibile da tutti. Questo stato è contenuto nel fcB come parte dello stato aperto per ogni oggetto file. Ogni oggetto file deve avere una sola struttura di accesso di condivisione. Altri driver di livello più alto potrebbero chiamare questa routine per controllare l'accesso richiesto quando viene aperto un oggetto file che rappresenta tale oggetto dispositivo del driver.

IoCheckShareAccess non è un'operazione atomica. Pertanto, i driver che chiamano questa routine devono proteggere l'oggetto file condiviso passato a IoCheckShareAccess tramite un tipo di blocco, ad esempio un mutex o un blocco di risorse, per impedire il danneggiamento dei conteggi di accesso condiviso.

Requisiti

   
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm)

Vedi anche

ACCESS_MASK

IoCreateFile

IoCreateFileEx

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoSetShareAccess

IoUpdateShareAccess