Quando o dllmain será chamado com o sinalizador DLL_Process_Verifier?
Pergunta
No Windows, o ponto de entrada padrão da DLL é chamado de dllmain. O segundo parâmetro é um dword, ul_reason_for_call
.
Eu procurei os valores possíveis para este segundo parâmetro no MSDN. O seguinte é óbvio:
DLL_PROCESS_ATTACH:
DLL_THREAD_ATTACH:
DLL_THREAD_DETACH:
DLL_PROCESS_DETACH:
Mas que tal:
DLL_PROCESS_VERIFIER
Quando o ponto de entrada será chamado com este sinalizador? Devo me preocupar com isso durante a operação 'normal' da DLL?
Observe que eu só vejo DLL_PROCESS_VERIFIER
Em arquivos de cabeçalho do Visual Studio 2005, não em 2008.
Solução
Eu acho que, em teoria, a Microsoft pode inventar novos usos e sinalizadores sempre que sentir que precisam de um novo. Portanto, a regra simples é garantir que seu código tolere valores inesperados: ou seja, escreva -a para lidar com os casos que você precisa manusear e ignorar o restante, retornando zero.
Outras dicas
Isso é realmente obscuro. Nunca está documentado em o sdk e não aparece nos arquivos de cabeçalho do SDK. O Google produz apenas alguns acertos, a maioria dos sites é inativa ou não confiável. O único acerto decente que eu recebo é o código Xbox, ele apenas o declara, mas na verdade não o usa.
Não estou suficientemente convencido de que este é um código real que você encontraria em um programa regular do Windows.
Eu acho que pode ter valor se for executado Verificador de aplicação. Tipo de adivinhação :)