Como compartilhar mapeado para memória objetos entre processos no Windows CE

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: 301242
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Você pode usar um objeto de memória mapeada para compartilhar dados entre processos. Este artigo mostra como compartilhar dados entre processos usando mapeamento de memória no Microsoft Windows CE.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que será necessário:
  • Dispositivo do Microsoft Windows CE
  • Microsoft Windows 2000 ou Windows NT Workstation 4.0 com SP5 ou posterior.
  • O Microsoft eMbedded Visual C++ versão 3.0 (anteriormente conhecido como o Microsoft Windows CE Toolkit para Visual C++ versão 6.0)
back to the top

Compartilhando dados entre processos usando mapeamento de memória

  1. Chamar a função CreateFileMapping para criar o objeto de memória, usando o parâmetro lpFileName para passar um nome para o objeto de memória mapeada:
    HANDLE CreateFileForMapping(LPCTSTR lpFileName,      DWORD dwDesiredAccess,       DWORD dwShareMode,       LPSECURITY_ATTRIBUTES lpSecurityAttributes,       DWORD dwCreationDisposition,       DWORD dwFlagsAndAttributes,      HANDLE hTemplateFile);						
    o nome do arquivo é o nome do arquivo para leitura. O parâmetro dwDesiredAccess , especificando os direitos de acesso para o arquivo, deve ser zero ou GENERIC_READ. Os atributos de segurança devem ser NULL, enquanto o parâmetro hTemplateFile é ignorado pelo Windows CE. Além disso, CreateFileForMapping só pode ser chamado de uma vez em um arquivo é aberto no modo de GRAVAÇÃO_GENÉRICA.

    Observação Windows baseado em CE aplicativos deve usar esta função ao abrir arquivos para uso memória mapeada em vez de usar CreateFile é usado com Microsoft Windows NT ou Microsoft Windows 98. Os parâmetros para essa função são semelhantes dos CreateFile .
  2. Passe o nome do objeto de memória mapeada para o processo com o qual você deseja se comunicar.
  3. Chame a função CreateFileMapping no segundo processo, usando o nome do objeto que você passado com o primeiro objeto. O nome do objeto de memória mapeada é global. Quando o segundo processo chama a função CreateFileMapping , Windows CE passa volta a alça para o objeto original.
  4. Use a função MapViewOfFile em qualquer processo para acessar o objeto de memória mapeada. Um modo de exibição é criado por uma chamada para MapViewOfFile para retornar um ponteiro para o arquivo de memória mapeada.
Ao usar arquivos de memória mapeada para comunicação entre processos, processos devem passar o nome da região para o segundo processo, não para um ponteiro. O segundo processo deve criar um objeto de memória mapeada com o mesmo nome que o processo inicial. O nome da região é passado no CreateFileMapping . Se outro processo abrir um arquivo mapeado para memória com o mesmo objeto nomeado, o Windows CE sabe para passar um ponteiro para a região mesma que foi aberta pelo processo do primeiro. O sistema também incrementa uma contagem de uso para controlar o número de aberturas. Isso garante que um processo que o objeto permanecerá pelo menos até que ele fecha o próprio objeto.

back to the top

Solucionar problemas

Não criar um objeto sem nome e passar um ponteiro de memória para processos diferentes; um processo pode fechar o objeto sem nome sem informando o outro processo. Para evitar esse erro de memória, Windows CE oferece suporte a nomeação do objeto sem nome. Em vez de passar um ponteiro para o objeto, você pode passar o nome do objeto. Outro processo, em seguida, acessa o objeto por meio de seu nome. Acessando o objeto por meio do nome informa quais processos têm acesso a objeto do Windows CE. Windows CE, em seguida, exclui o objeto apenas quando ambos os processos fecharam o objeto.

back to the top
Referências
Para obter mais informações, consulte a documentação do desenvolvedor de software do Microsoft Windows CE 3.0 no seguinte site da MSDN: back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 301242 - Última Revisão: 12/06/2015 03:16:51 - Revisão: 1.2

Microsoft Windows CE eMbedded Visual C++, Version:4.0 3.0

  • kbnosurvey kbarchive kbmt kbhowto kbhowtomaster KB301242 KbMtpt
Comentários