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 |