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 accettando 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 lo stato 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 di quanto segue:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out] FileObject
Puntatore all'oggetto file per il quale controllare l'accesso per la richiesta aperta corrente.
[in, out] ShareAccess
Puntatore alla struttura dei dati di accesso condiviso comune associata a FileObject. I driver devono considerare questa struttura come opaca.
[in] Update
Specifica se aggiornare lo stato di accesso alla condivisione per FileObject. Un valore booleano TRUE indica che questa routine aggiornerà le informazioni di accesso alla 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, viene restituita STATUS_SHARING_VIOLATION.
Commenti
IoCheckShareAccess controlla una richiesta di apertura 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 altre aperte.
I file system mantengono lo stato dei 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 cluster di failover come parte dello stato aperto per ogni oggetto file. Ogni oggetto file deve avere una sola struttura di accesso condiviso. 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 evitare il danneggiamento dei conteggi di accesso condiviso.
Requisiti
Requisito | Valore |
---|---|
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) |