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 |