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
Commenti e suggerimenti
Invia e visualizza il feedback per