Por que ele retorna um valor estranho ao processar WM_DEVICECHANGE

Escorpião

Para rejeitar uma solicitação de consulta de remoção de dispositivo, precisamos retornar um valor especial BROADCAST_QUERY_DENY, este valor também tem um valor estranho: 0x424D5144.

Por quê?

Tentamos seguir o método de processamento de mensagens WM_QUERYENDSESSION, ou seja, se retornar TRUE, a operação continua, e se retornar FALSE, a operação falha. No entanto, quando realmente fizemos isso, descobrimos que muitos programas recusariam a solicitação de remoção de dispositivos Plug and Play, porque esses programas foram escritos para o Windows 3.1, e o sistema operacional naquela época não era plug-and-play. Recursos prontos para usar. O que está acontecendo aqui?

Mas os desenvolvedores que desenvolveram esses programas pensam assim: Agora que tenho o SDK do Windows 3.1, verifiquei todas as mensagens e processei apenas as mensagens de que estou interessado. Quanto ao resto, não preciso me preocupar, posso diretamente Retorne 0, portanto, não há necessidade de chamar DefWindowProc. Na verdade, o método acima funciona no Windows 3.1. Os desenvolvedores leram cuidadosamente a documentação do SDK e descobriram que 5 a 6 mensagens exigem um valor de retorno diferente de zero e precisam garantir que esse valor diferente de zero seja retornado. . Outras mensagens retornam um valor de 0.

Então, quando adicionamos uma nova mensagem que exigia um valor de retorno diferente de zero, esses programas continuaram a retornar um valor zero, o que causou a falha de todas as consultas de remoção de dispositivo.

Portanto, alteramos o valor de retorno 0 usado para expressar "cancelar" para outro valor. Para garantir ainda mais a segurança, também decidimos não definir esse valor como 1, porque pensamos que poderia haver muitos programas que simplesmente retornariam TRUE para todas as mensagens, então não queremos modificar repetidamente o documento de desenvolvimento.

No final, escolhemos o valor estranho mencionado acima.

Resumindo

Este é outro exemplo de troca com desenvolvedores. Mais forte que a Microsoft, não é fácil lidar com esse tipo de coisa.

Acho que você gosta

Origin blog.csdn.net/mmxida/article/details/107945576
Recomendado
Clasificación