Artigo: 68827 - Última revisão: quinta-feira, 30 de Outubro de 2003 - Revisão: 2.0

Actualizar em cache perfis privada (ficheiros .ini)

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

No Windows versão 3.1, pela primeira vez que um perfil privado (ficheiro ini) é acedido, o sistema irá chamar a API GetFileTime() e armazenar este valor. A API WriteProfileString() irá, em seguida, chamar a API GetFileTime() e comparar o valor devolvido para o valor armazenado. Se os dois valores corresponderem, o ficheiro é considerado válido para dois segundos. A função efectua as alterações e escreve o novo conteúdo para o disco. Se os dois valores não corresponderem, o perfil é ler novamente para uma memória intermédia e é efectuada a alteração. O mesmo princípio também se verifica para ler os valores de um perfil privado.

Raciocínio atrás do segundo limite de duas é que a maior parte das aplicações ler perfis privados numa rajada no arranque da aplicação e escrever uma rajada no encerramento da aplicação. Penalização de uma leitura numa sequência de leitura vinte é considerada aceitável, dado as vantagens.

No Windows versão 3.0, uma aplicação que tenha um perfil privado não vai responder às alterações efectuadas a esse perfil privado por um editor de texto. Quando um editor de texto actualiza um perfil privado, o ficheiro no disco é modificado. No entanto, GetPrivateProfileString() e GetPrivateProfileInt() não ler do ficheiro de disco, em vez disso, as funções de ler uma cópia do ficheiro na cache. WritePrivateProfileString() actualizará secções adequadas no ficheiro em cache e o ficheiro de disco, no entanto, as funções serão não recarregar o ficheiro de disco para a cache a menos que a cache toda é invalidada. As informações incluídas abaixo explica como forçar um perfil privado para recached de um ficheiro de disco.

Mais Informação

Windows coloca em cache ficheiros .ini para reduzir o tempo de acesso. Esta estrutura permite que o ficheiro para permanecer na memória até que um ficheiro .ini diferente é carregado ou até que uma aplicação força recaching do ficheiro.

Para forçar um ficheiro .ini ser recached, efectue a chamada seguinte (em que <fname.ini> é o nome do perfil privado da aplicação):
   WritePrivateProfileString(NULL, NULL, NULL, <fname.ini>)
				
esta chamada forçará o ficheiro .ini completo que está na cache para ser invalidada. A chamada seguinte para GetPrivateProfileString() ou GetPrivateProfileInt() fará com que o ficheiro de disco ser recached.

Enquanto os ficheiros .ini são colocados em cache para optimizar o tempo de acesso, seguem-se exemplos de como e quando um ficheiro .ini poderia ser recached.

  1. A aplicação foi possível actualizar a cache do disco sempre que a aplicação requer informações do perfil. Chamar a função de WritePrivateProfileString conforme descrito acima, deve limpar a cache.

    NOTA: Uma vez que o ficheiro é recached com qualquer acesso, a vantagem da cache é perdida com este método.
  2. Criar um programa separado ou função que o utilizador deverá invocar a explicitamente invalida a cache. Segue-se alguns códigos para esse fim pode ser colocado a aplicação de exemplo GENERIC fornecida com o Windows Software Development Kit (SDK):
       BOOL InitInstance(HANDLE hInstance, int nCmdShow)
       {
          LPSTR lpApplicationName, lpKeyName, lpDefault, lpReturnedString;
    
          int   nSize;
    
          /* initialize variables */ 
          ...
    
          WritePrivateProfileString(NULL, NULL, NULL, "MY.INI");
          GetPrivateProfileString(lpApplicationName, lpKeyName,
             lpDefault, lpReturnedString, nSize, "MY1.INI");
          MessageBox(NULL, "Cache Refreshed", szApp,
             MB_ICONINFORMATION | MB_OK);
          return TRUE;
       }
    						
    utilizando um programa ou função tal fará com que o ficheiro .ini ser recached só quando é alterado por um editor, assim a vantagem da cache é mantido. No entanto, é necessário para o utilizador chamar outra aplicação ou função depois do perfil é alterado com um editor.
  3. Se nenhuma destas técnicas adequada, a aplicação foi possível verificar a marca de data e hora no ficheiro .ini antes de cada acesso para ver se invalidação de cache é necessária. Esta opção fornece as vantagens da cache sem ser necessário o utilizador ligar a outro programa. O tempo necessário para ler o carimbo de data e hora é mínimo comparado com o ficheiro com cada chamada para funções de GetPrivateProfileString ou GetPrivateProfileInt recaching.

A informação contida neste artigo aplica-se a:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Palavras-chave: 
kbmt kb16bitonly KB68827 KbMtpt
Tradução automáticaTradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 68827  (http://support.microsoft.com/kb/68827/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.