Comunicação entre processos entre aplicativos de 32 bits e 64 bits

As seguintes técnicas podem ser usadas para comunicação entre aplicativos de 32 bits e 64 bits:

  • As versões de 64 bits do Windows usam identificadores de 32 bits para interoperabilidade. Ao compartilhar um identificador entre aplicativos de 32 bits e 64 bits, somente os 32 bits inferiores são significativos, portanto, é seguro truncar o identificador (ao passá-lo de 64 bits para 32 bits) ou estender o identificador (ao passá-lo de 32 bits para 64 bits). Os identificadores que podem ser compartilhados incluem identificadores para objetos de usuário, como janelas (HWND), identificadores para objetos GDI, como canetas e pincéis (HBRUSH e HPEN), e identificadores para objetos nomeados, como mutexes, semáforos e identificadores de arquivo.
  • Chamadas de procedimento remoto (RPC) podem ser usadas.
  • Os Servidores Locais com COM poderão ser usados se as DLLs de proxy/stub de 32 bits e de 64 bits estiverem registradas para todas as interfaces usadas.
  • A memória compartilhada poderá ser usada se os tipos dependentes de ponteiro forem convertidos corretamente (ou evitados).
  • As funções CreateProcess e ShellExecute podem iniciar processos de 32 bits e 64 bits de processos de 32 ou 64 bits com determinadas limitações.

Um arquivo executável de 64 bits localizado em %windir%\System32 não pode ser iniciado de um processo de 32 bits, pois o redirecionador do sistema de arquivos redireciona o caminho. Não desabilite o redirecionamento para fazer isso; em vez disso, use %windir%\Sysnative. Para obter mais informações, consulte Redirecionador do Sistema de Arquivos.