Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La routine IoCheckShareAccess est appelée par les pilotes de système de fichiers (FSD) ou d’autres pilotes de niveau supérieur pour vérifier si l’accès partagé à un objet de fichier est autorisé.
Syntaxe
NTSTATUS IoCheckShareAccess(
[in] ACCESS_MASK DesiredAccess,
[in] ULONG DesiredShareAccess,
[in, out] PFILE_OBJECT FileObject,
[in, out] PSHARE_ACCESS ShareAccess,
[in] BOOLEAN Update
);
Paramètres
[in] DesiredAccess
Spécifie une valeur ACCESS_MASK qui indique le type d’accès souhaité au FileObject donné pour la requête ouverte actuelle. Les pilotes calculent la valeur de ce paramètre en prenant l’accès demandé dans la requête IRP_MJ_CREATE, puis en appliquant SeAccessCheck pour chaque descripteur de sécurité pour déterminer l’accès réel accordé. Si l’accès accordé est plus restrictif que l’accès souhaité, il s’agit d’une erreur, et le pilote doit terminer l’IRP actuelle avec l’état de STATUS_ACCESS_DENIED. (Notez que SeAccessCheck efface le bit MAXIMUM_ALLOWED dans l’accès accordé ; veillez à ne pas utiliser ce bit lors de la comparaison de l’accès souhaité à l’accès accordé.) Le pilote transmet ensuite l’accès accordé comme valeur de DesiredAccess.
[in] DesiredShareAccess
Spécifie le type souhaité d’accès partagé à FileObject pour la requête ouverte actuelle. La valeur de ce paramètre est généralement la même que la ShareAccess passée au système de fichiers ou au pilote de niveau supérieur par le gestionnaire d’E/S lorsque la requête ouverte a été effectuée. Cette valeur peut être zéro ou n’importe quelle combinaison des éléments suivants :
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out] FileObject
Pointeur vers l’objet de fichier pour lequel vérifier l’accès à la requête ouverte actuelle.
[in, out] ShareAccess
Pointeur vers la structure de données d’accès au partage commune associée à FileObject. Les pilotes doivent traiter cette structure comme opaque.
[in] Update
Spécifie s’il faut mettre à jour l’état d’accès au partage pour FileObject. Une valeur booléenne de TRUE signifie que cette routine met à jour les informations d’accès de partage pour l’objet de fichier si la demande ouverte est autorisée.
Valeur de retour
IoCheckShareAccess retourne STATUS_SUCCESS si l’accès du demandeur à l’objet de fichier est compatible avec la façon dont il est actuellement ouvert. Si la demande est refusée en raison d’une violation de partage, STATUS_SHARING_VIOLATION est retournée.
Remarques
IoCheckShareAccess vérifie une demande d’ouverture d’objet de fichier pour déterminer si les types d’accès souhaités et partagés spécifiés sont compatibles avec la façon dont l’objet de fichier est actuellement accessible par d’autres ouvertures.
Les systèmes de fichiers conservent l’état des fichiers par le biais de structures appelées blocs de contrôle de fichiers (FCB). La SHARE_ACCESS est une structure décrivant la façon dont le fichier est actuellement accessible par tous les ouvertures. Cet état est contenu dans le FCB dans le cadre de l’état ouvert pour chaque objet de fichier. Chaque objet de fichier ne doit avoir qu’une seule structure d’accès au partage. D’autres pilotes de niveau supérieur peuvent appeler cette routine pour vérifier l’accès demandé lorsqu’un objet de fichier représentant cet objet de périphérique d’un pilote est ouvert.
IoCheckShareAccess n’est pas une opération atomique. Par conséquent, les pilotes appelant cette routine doivent protéger l’objet de fichier partagé transmis à ioCheckShareAccess par le biais d’un type de verrou, tel qu’un mutex ou un verrou de ressource, afin d’empêcher l’altération du nombre d’accès partagé.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
règles de conformité DDI | HwStorPortProhibitedDDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm) |