ReadFile retorna "ACCESS_DENIED" mensagem de erro durante a continuação

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 811693
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Aplicativos que estão lendo a tabela de alocação de arquivo (FAT) com base dispositivos de armazenamento no momento de um currículo receberá a seguinte mensagem de erro do sistema de arquivos:
ERROR_ACCESS_DENIED (0 X 00000005)
Isso ocorre Embora o arquivo tem permissão de compartilhamento e acesso apropriado.

Exemplos de mídia de armazenamento que freqüentemente usam o sistema de arquivos FAT no Pocket PC 2002 são a ATA de placa PCMCIA PC, a placa de armazenamento Compact Flash (FC) e o cartão de memória Secure Digital (SD).

Esse comportamento é observado ao usar Pocket PC 2002 adaptação Kit Update 4 (AKU4) e posterior.
Causa
O código de erro é uma indicação de que o dispositivo não está pronto para acessar. Normalmente, esse problema ocorre porque drivers para dispositivos de armazenamento removível com base em FAT são descarregados e recarregados no currículo, que requer um curto período de tempo para ser concluída. Se ocorrer um acesso de leitura durante esse período, o código de erro é retornado pelo sistema de arquivos. Uma correção foi introduzida no AKU4 para impedir que o dispositivo deslocado quando o dispositivo é acessado imediatamente após reiniciar, e o novo comportamento esperado é para retornar esse código de erro.
Resolução
Aplicativos podem manipular nessa situação, detectando o código de erro específico ao ler um arquivo de cartão de armazenamento e, em seguida, tentar novamente por um curto período até que o dispositivo está pronto. A seguir está um fragmento de código de exemplo C que demonstra esse conceito:
while ( !WriteFile( hFile, achBuffer, dwBytesRequested, &dwBytesReturned, 0 ) &&         ( ERROR_ACCESS_DENIED == GetLastError() ) ){    // Access Denied: Maybe the file system is not ready yet.    tries++;    if ( tries > 4 )        break;    Sleep(500);}// It has been a few seconds.  The file cannot be accessed.
você pode usar a mesma abordagem para outras linguagens de programação. Para aplicativos que acessam a placa de armazenamento por meio de bibliotecas de middleware que não fornecem acesso direto para o sistema de arquivos, talvez você precise implementar transacional ou bloquear métodos de verificação para obter transferência confiável de dados em um currículo de suspensão.
Situação
Esse comportamento é por design.
Mais Informações
Alguns aplicativos Microsoft não tente novamente quando o sistema de arquivos não está pronto e retornará uma mensagem de erro que indica que a leitura falhou. Arquivo Explorer é um desses aplicativos. Quando esse problema ocorre no Gerenciador de arquivos, você receber a seguinte mensagem de erro:
Não é possível copiar ' FileName ': acesso negado. Certifique-se o disco não está cheio ou protegido contra gravação e o arquivo não está em uso.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 811693 - Última Revisão: 10/26/2013 17:58:03 - Revisão: 2.2

Microsoft Pocket PC 2002 Software Standard Edition

  • kbnosurvey kbarchive kbmt kberrmsg kbprb KB811693 KbMtpt
Comentários