Função IoCheckLinkShareAccess (wdm.h)

A rotina IoCheckLinkShareAccess é chamada por FSDs (drivers do sistema de arquivos) ou outros drivers de nível mais alto para marcar se o acesso compartilhado a um objeto de arquivo é permitido.

Sintaxe

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 um valor ACCESS_MASK que indica o tipo desejado de acesso ao objeto de arquivo fornecido.

[in] DesiredShareAccess

Especifica o tipo desejado de acesso compartilhado ao objeto de arquivo para a solicitação aberta atual. O valor desse parâmetro geralmente é o mesmo que o parâmetro ShareAccess que é passado para o sistema de arquivos ou o driver de nível mais alto pelo gerenciador de E/S quando a solicitação aberta foi feita. Esse valor pode ser zero ou qualquer combinação do seguinte:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out, optional] FileObject

Um ponteiro para o objeto de arquivo para o qual marcar acesso para a solicitação aberta atual.

[in, out, optional] ShareAccess

Um ponteiro para a estrutura de dados de acesso de compartilhamento comum associada ao FileObject. Os drivers devem tratar essa estrutura como opaca.

[in, out, optional] LinkShareAccess

Um ponteiro para a estrutura de dados de acesso de compartilhamento de link comum (LINK_SHARE_ACCESS) associada ao FileObject. Os drivers devem tratar essa estrutura como opaca.

[in] IoShareAccessFlags

Uma máscara de bits desses sinalizadores:

IO_SHARE_ACCESS_NO_WRITE_PERMISSION (0x80000000) especifica que o usuário não tem permissão de gravação para o arquivo. Esse sinalizador é usado para impedir a abertura de um arquivo para acesso de leitura exclusivo quando o usuário não tem permissões apropriadas.

IO_SHARE_ACCESS_NON_PRIMARY_STREAM (0x00000080) especifica que o fluxo não é nem o fluxo de dados primário nem um fluxo de diretório.

IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS (0x00000001) indica se a estrutura de SHARE_ACCESS é atualizada.

IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT (0x00000002) indica não atualizar FILE_OBJECT estrutura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ (0x00000004) indica não marcar acesso de compartilhamento de leitura.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE (0x00000008) indica não marcar acesso de compartilhamento de gravação.

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) indica não marcar excluir o acesso ao compartilhamento.

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) indicam forçar marcar acesso de compartilhamento mesmo que a solicitação não seja acesso de leitura/gravação/exclusão.

IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) indica forçar marcar excluir o acesso de compartilhamento usando o ShareAccess, independentemente de LinkShareAccess estar presente ou não.

Retornar valor

A rotina IoCheckLinkShareAccess retornará STATUS_SUCCESS se o acesso do solicitante ao objeto de arquivo for compatível com a maneira como ele está aberto no momento. Se a solicitação for negada devido a uma violação de compartilhamento, STATUS_SHARING_VIOLATION será retornado.

Comentários

O parâmetro ShareAccess deve ser bloqueado em outros acessos de outros threads enquanto essa rotina está sendo executada. Caso contrário, as contagens podem ser de sincronização.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1709
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Universal
Cabeçalho wdm.h
Biblioteca Ntoskrnl.lib

Confira também

Rotinas do Gerente de E/S

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess