Compartir a través de


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)

Consulte también

ACCESS_MASK

IoCreateFile

IoCreateFileEx

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoSetShareAccess

ioUpdateShareAccess