Función IoCheckLinkShareAccess (wdm.h)

Los controladores del sistema de archivos (FSD) llaman a la rutina IoCheckLinkShareAccess u otros controladores de nivel superior para comprobar si se permite el acceso compartido de vínculo a un objeto de archivo.

Sintaxis

NTSTATUS IoCheckLinkShareAccess(
  [in]                ACCESS_MASK        DesiredAccess,
  [in]                ULONG              DesiredShareAccess,
  [in, out, optional] PFILE_OBJECT       FileObject,
  [in, out, optional] PSHARE_ACCESS      ShareAccess,
  [in, out, optional] PLINK_SHARE_ACCESS LinkShareAccess,
  [in]                ULONG              IoShareAccessFlags
);

Parámetros

[in] DesiredAccess

Especifica un valor de ACCESS_MASK que indica el tipo de acceso deseado al objeto de archivo especificado.

[in] DesiredShareAccess

Especifica el tipo deseado de acceso compartido al objeto de archivo para la solicitud abierta actual. El valor de este parámetro suele ser el mismo que el parámetro shareAccess que se pasa 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, optional] FileObject

Puntero al objeto de archivo para el que se va a comprobar el acceso de la solicitud abierta actual.

[in, out, optional] ShareAccess

Puntero a la estructura de datos de acceso a recursos compartidos común que está asociada a FileObject. Los controladores deben tratar esta estructura como opaca.

[in, out, optional] LinkShareAccess

Puntero a la estructura de datos de acceso compartido de vínculo común (LINK_SHARE_ACCESS) asociada a FileObject. Los controladores deben tratar esta estructura como opaca.

[in] IoShareAccessFlags

Máscara de bits de estas marcas:

IO_SHARE_ACCESS_NO_WRITE_PERMISSION (0x80000000) especifica que el usuario no tiene permiso de escritura para el archivo. Esta marca se usa para evitar abrir un archivo para acceso de lectura exclusivo cuando el usuario no tiene los permisos adecuados.

IO_SHARE_ACCESS_NON_PRIMARY_STREAM (0x00000080) especifica que el flujo no es el flujo de datos principal ni un flujo de directorio.

IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS (0x00000001) indica si se actualiza la estructura de SHARE_ACCESS .

IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT (0x00000002) indica que no se actualiza FILE_OBJECT estructura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ (0x00000004) indica que no se comprueba el acceso al recurso compartido de lectura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE (0x00000008) indica que no se comprueba el acceso al recurso compartido de escritura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) indica que no se debe comprobar la eliminación del acceso a recursos compartidos.

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) indican forzar la comprobación del acceso al recurso compartido, incluso si la solicitud no es acceso de lectura, escritura o eliminación.

IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) indica forzar la comprobación del acceso de eliminación de recursos compartidos mediante ShareAccess independientemente de si LinkShareAccess está presente o no.

Valor devuelto

La rutina IoCheckLinkShareAccess 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.

Comentarios

El parámetro ShareAccess debe bloquearse en otros accesos desde otros subprocesos mientras se ejecuta esta rutina. De lo contrario, los recuentos pueden ser sincronizaciones.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1709
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Universal
Encabezado wdm.h
Library Ntoskrnl.lib

Consulte también

Rutinas del administrador de E/S

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess