Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para permitir que aplicativos de 32 bits sejam executados em um sistema operacional de 64 bits, um driver de vídeo de modo de usuário de 32 bits deve ser fornecido, além do driver de vídeo de modo de usuário de 64 bits que os aplicativos de 64 bits exigem. No entanto, apenas a versão de 64 bits de um driver de miniporta de vídeo é necessária em um sistema operacional de 64 bits. O Windows no Windows (WOW64) permite que aplicativos de 32 bits sejam executados em um sistema operacional de 64 bits. Para obter mais informações, consulte Suporte a E/S de 32 bits no driver de 64 bits.
Para instalar um controlador de apresentação em modo utilizador de 32 bits num sistema operativo de 64 bits, a seguinte entrada deve ser definida numa secção add-registry do ficheiro INF para o controlador de miniporta de apresentação do dispositivo gráfico. Isso deve acontecer para que o nome da DLL do driver de exibição de modo de usuário de 32 bits seja adicionado ao registro durante a instalação do driver:
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDriverNameWow, %REG_MULTI_SZ%, Xxx.dll
...
O arquivo INF deve conter informações para direcionar o sistema operacional para copiar o driver de vídeo de modo de usuário de 32 bits para o diretório \SysWOW64 %systemroot%do sistema. Para obter mais informações, consulte Diretiva INF CopyFiles e Seção INF DestinationDirs.
Como o WOW64 não pode processar estruturas de dados opacas ou não tipadas, como a estrutura D3DDDICB_ALLOCATE passada através da função pfnAllocateCb , ele não pode executar uma conversão automática de 32 bits para 64 bits. Portanto, para que o WOW64 funcione corretamente, você deve considerar os seguintes itens ao escrever um driver de vídeo de modo de usuário de 32 bits para ser executado em um sistema operacional de 64 bits:
Evite ponteiros ou tipos de dados sensíveis a vários sistemas operacionais, como SIZE_T ou HANDLE. Além de tornar o tamanho de toda a estrutura variável, esses tipos de dados de largura variável tornam o alinhamento e a posição de membros individuais diferentes. Se os membros de largura variável forem inevitáveis, poderá adicionar outro membro para indicar que a estrutura de dados se origina de um controlador de apresentação de modo de utilizador de 32 bits. O driver de miniporta de exibição de 64 bits pode então executar corretamente a conversão.
Mesmo que os membros de largura variável não estejam presentes, talvez seja necessário considerar os requisitos de alinhamento específicos da arquitetura. Por exemplo, em x64, um UINT64 (ou QWORD) deve estar alinhado com 8 bytes. Como um driver de vídeo de modo de usuário de 32 bits compilado por um compilador padrão de 32 bits pode não alinhar esses tipos nativos de 64 bits corretamente, o driver de miniporta de vídeo de 64 bits pode não ser capaz de acessar com precisão os dados do driver de vídeo de modo de usuário de 32 bits. No entanto, você pode forçar o alinhamento usando as diretivas de compilador pragma apropriadas. Embora o uso de diretivas de compilador pragma possa causar um pequeno desperdício de espaço em sistemas operacionais de 32 bits, isso permite que você use drivers de exibição idênticos de modo de usuário de 32 bits em sistemas operacionais de 32 bits e 64 bits. Se você não puder forçar o alinhamento usando as diretivas de compilador pragma apropriadas, o driver de vídeo de modo de usuário de 32 bits que é executado usando WOW64 em um sistema operacional de 64 bits deve ser diferente do driver de vídeo de modo de usuário de 32 bits em execução em um sistema operacional de 32 bits.