Compartilhar via


Loading DLLs in Kernel Mode or User Mode: Windows CE 5.0 vs. Windows Embedded CE 6.0

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Um DLL Não é possível simultaneamente carregar tanto modo kernel e modo usuário. Quando você executar um arquivo executável ou um DLL, deve ser capaz de codificar executar no seu endereço especificado. De exemplo, saltos dentro de codificar ou referências a variáveis globais devem ser modificados para referir para o disco rígido-endereços codificado. Porque carregar DLLs kernel acima 0x80000000 e carregar DLLs usuário abaixo 0x80000000, é impossível para um único copiar do DLL para poder executar em ambos os locais at once.

Em Windows Embedded CE 6.0, o OS ignora essa limitação, fazendo com que as duas versões Algumas DLLs; Uma versão para carregar no modo kernel e uma versão para carregar em modo de usuário. O kernel tem um novo padrão de nomeação para as DLLs que carregar no modo kernel e modo usuário. O kernel-versão modo do DLL tem um k. No início do nome. De exemplo, o usuário-versão modo de coredll é coredll.dll enquanto o kernel-modo versão é k.coredll.dll. O kernel automaticamente traduz kernel-modo acessa a versão modo usuário - modo DLLs para o kernel adequada - para essa versão. De exemplo, se um DLL estiver vinculado o usuário-modo coredll.dll, como praticamente todas as DLLs no sistema compilar são, ao que DLL é carregado no processo de kernel, o DLL está importando a partir de kernel-modo k.coredll.dll, em vez disso. Não há nenhum erro carregar Neste maiúsculas e minúsculas, pois a importa perfeitamente é redirecionadas para o kernel DLL. Da mesma forma, se codificar no processo de kernel chama LoadLibrary em coredll.dll, ele realmente carrega uma referência a k.coredll.dll. Portanto, se ele chama GetProcAddress e chama uma função, ele chama o kernel adequada-função modo.

Ramificações de DLL ao carregar o mecanismo

Em CE 6.0, se você implementar as DLLs, você não precisará alteração coredll.dll todas as referências a referências k.coredll.dll. Na verdade, que seria destruir portabilidade do seu codificar para modo de usuário. No futuro, você pode desejar para executar seu codificar em modo de usuário, em vez de dentro de kernel.

Os OEMs talvez precise especificar onde seu carregar DLLs com arquivo .bib sinalizadores. O Z sinalizador especifica Windows CE 5.0 e versões anteriores. Z não pode ser combinado com o sinalizador compactação C, enquanto há não tais restrições em K Ou Q. Para obter mais informações, consulte Binary Image Builder File.

See Also

Other Resources

Kernel Functionality Modifications: Windows CE 5.0 vs. Windows Embedded CE 6.0
Kernel API Modifications: Windows CE 5.0 vs. Windows Embedded CE 6.0