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.

Foi útil?

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 :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top