Compartilhar via


Função IoCheckLinkShareAccess (wdm.h)

A rotina de IoCheckLinkShareAccess é chamada por FSDs (drivers do sistema de arquivos) ou outros drivers de nível mais alto para verificar se o acesso compartilhado de link 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 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 verificar o acesso à solicitação aberta atual.

[in, out, optional] ShareAccess

Um ponteiro para a estrutura de dados comuns de acesso a compartilhamento associada a 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 a FileObject. Os drivers devem tratar essa estrutura como opaca.

[in] IoShareAccessFlags

Uma máscara de bits destes 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 tiver 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 verificar o acesso de compartilhamento de leitura.

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

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) indica não verificar a exclusão do acesso ao compartilhamento.

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) indicam forçar a verificação do acesso ao 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 a verificação de acesso de compartilhamento de exclusão usando o ShareAccess, independentemente de LinkShareAccess estiver presente ou não.

Valor de retorno

A rotina de IoCheckLinkShareAccess retorna 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.

Observações

O parâmetro shareaccess deve ser bloqueado em relação a outros acessos de outros threads enquanto essa rotina está sendo executada. Caso contrário, as contagens poderão ser sincronizadas.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 1709
servidor com suporte mínimo Windows Server 2016
da Plataforma de Destino Universal
cabeçalho wdm.h
biblioteca Ntoskrnl.lib

Consulte também

rotinas do gerente de E/S

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess