Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para permitir que aplicativos de 32 bits sejam executados em um sistema operacional de 64 bits, um driver de exibição de modo de usuário de 32 bits deve ser fornecido além do driver de exibição 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 adaptador de vídeo é exigida 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 driver de exibição em modo de usuário de 32 bits em um sistema operacional de 64 bits, a seguinte entrada deve ser definida em uma seção de adição ao registro do arquivo INF para o driver miniport de exibição do dispositivo gráfico. Isso deve acontecer para que o nome DLL do driver de exibição do 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 exibição de modo de usuário de 32 bits no diretório %systemroot%\SysWOW64 do sistema. Para obter mais informações, consulte a Diretiva INF CopyFiles e a Seção INF DestinationDirs.
Como o WOW64 não pode processar estruturas de dados opacas ou não tipadas, como a estrutura de D3DDDICB_ALLOCATE passada por meio da função pfnAllocateCb , ela 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 exibição de modo de usuário de 32 bits para ser executado em um sistema operacional de 64 bits:
Evite ponteiros ou tipos de dados que sejam confidenciais 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 fazem com que o alinhamento e a posição dos membros individuais sejam diferentes. Se os membros de largura variável forem inevitáveis, você poderá adicionar outro membro para indicar que a estrutura de dados se origina de um driver de exibição de modo de usuário de 32 bits. O driver de exibição de miniporto 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 a 8 bytes. Como um driver de exibição em modo usuário de 32 bits compilado por um compilador padrão de 32 bits pode não alinhar corretamente esses tipos nativos de 64 bits, o driver de mini-porto de exibição de 64 bits pode não ser capaz de acessar com precisão os dados do driver de exibição em modo usuário de 32 bits. No entanto, você pode forçar o alinhamento usando as diretivas apropriadas do compilador pragma . Embora o uso de diretivas do 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 apropriadas do compilador pragma , o driver de exibição do modo de usuário de 32 bits que é executado usando WOW64 em um sistema operacional de 64 bits deve ser diferente do driver de exibição de modo de usuário de 32 bits em execução em um sistema operacional de 32 bits.