Función IoCheckShareAccess (wdm.h)
Los controladores del sistema de archivos (FSD) llama a la rutina IoCheckShareAccess u otros controladores de nivel superior para comprobar si se permite el acceso compartido a un objeto de archivo.
Sintaxis
NTSTATUS IoCheckShareAccess(
[in] ACCESS_MASK DesiredAccess,
[in] ULONG DesiredShareAccess,
[in, out] PFILE_OBJECT FileObject,
[in, out] PSHARE_ACCESS ShareAccess,
[in] BOOLEAN Update
);
Parámetros
[in] DesiredAccess
Especifica un valor ACCESS_MASK que indica el tipo de acceso deseado al FileObject especificado para la solicitud abierta actual. Los controladores calculan el valor de este parámetro tomando el acceso solicitado en la solicitud de IRP_MJ_CREATE y aplicando seAccessCheck para cada descriptor de seguridad para determinar el acceso real concedido. Si el acceso concedido es más restrictivo que el acceso deseado, se trata de un error y el controlador debe completar el IRP actual con un estado de STATUS_ACCESS_DENIED. (Tenga en cuenta que SeAccessCheck borra el bit de MAXIMUM_ALLOWED en el acceso concedido; asegúrese de no usar ese bit al comparar el acceso deseado a acceso concedido). A continuación, el controlador pasa el acceso concedido como el valor de DesiredAccess.
[in] DesiredShareAccess
Especifica el tipo deseado de acceso compartido a FileObject para la solicitud abierta actual. El valor de este parámetro suele ser el mismo que el ShareAccess pasado al sistema de archivos o al controlador de nivel superior por el administrador de E/S cuando se realizó la solicitud abierta. Este valor puede ser cero o cualquier combinación de lo siguiente:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out] FileObject
Puntero al objeto de archivo para el que se va a comprobar el acceso de la solicitud abierta actual.
[in, out] ShareAccess
Puntero a la estructura de datos de acceso compartido común asociada a FileObject. Los controladores deben tratar esta estructura como opaca.
[in] Update
Especifica si se debe actualizar el estado de acceso a recursos compartidos para FileObject. Un valor booleano de TRUE significa que esta rutina actualizará la información de acceso del recurso compartido para el objeto de archivo si se permite la solicitud abierta.
Valor devuelto
ioCheckShareAccess devuelve STATUS_SUCCESS si el acceso del solicitante al objeto de archivo es compatible con la forma en que está abierto actualmente. Si se deniega la solicitud debido a una infracción de uso compartido, se devuelve STATUS_SHARING_VIOLATION.
Observaciones
IoCheckShareAccess comprueba una solicitud de apertura de objeto de archivo para determinar si los tipos de accesos deseados y compartidos especificados son compatibles con la forma en que otros abre el objeto de archivo.
Los sistemas de archivos mantienen el estado de los archivos a través de estructuras denominadas bloques de control de archivos (FCB). El SHARE_ACCESS es una estructura que describe cómo se abre el archivo actualmente. Este estado se encuentra en el FCB como parte del estado abierto para cada objeto de archivo. Cada objeto de archivo debe tener solo una estructura de acceso de recurso compartido. Otros controladores de nivel superior pueden llamar a esta rutina para comprobar el acceso solicitado cuando se abre un objeto de archivo que representa el objeto de dispositivo de dicho controlador.
ioCheckShareAccess no es una operación atómica. Por lo tanto, los controladores que llaman a esta rutina deben proteger el objeto de archivo compartido pasado a IoCheckShareAccess por medio de algún tipo de bloqueo, como una exclusión mutua o un bloqueo de recursos, con el fin de evitar daños en los recuentos de acceso compartido.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 2000. |
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | PASSIVE_LEVEL |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm) |