Suporte a várias versões do sistema operacional

Os pacotes de driver geralmente darão suporte a muitas versões do sistema operacional Windows. Como parte do suporte a várias versões do sistema operacional, o pacote de driver pode precisar ter um comportamento diferente em diferentes versões do sistema operacional para usar novos recursos ou atender a novos requisitos da nova versão do sistema operacional. Por exemplo, um pacote de driver pode querer ter um comportamento diferente em sistemas operacionais após uma determinada versão para atender aos requisitos dos Drivers do Windows. As seções a seguir descrevem como você pode ter comportamentos diferentes no arquivo INF do pacote de driver e no comportamento de runtime de binários no pacote de driver.

Suporte ao INF

As decorações TargetOSVersion em seções de modelos INF no INF permitem que o autor do INF forneça instruções e configurações de instalação diferentes para diferentes versões do sistema operacional.

Consulte Combinando extensões de plataforma com versões do sistema operacional para obter mais informações.

Suporte de runtime

Ao tentar alterar o comportamento no runtime para dar suporte a várias versões do sistema operacional, é recomendável que você marcar para disponibilidade de recursos ou API sempre que possível, em vez de tentar marcar se o código estiver em execução em uma determinada versão do sistema operacional ou posterior. Por exemplo, se houver uma API que você deseja usar se ela estiver disponível, você poderá tentar localizá-la dinamicamente em vez de vinculá-la estaticamente a ela. Se você conseguir localizá-lo, poderá usá-lo, no entanto, se ele não estiver presente em seu ambiente de execução atual, você poderá fazer fallback para algum comportamento alternativo.

Modo Kernel

Para o modo kernel, consulte Escrevendo drivers para versões diferentes do Windows para obter mais informações sobre como dar suporte a várias versões do Windows de um único driver.

Modo de usuário

No modo de usuário, você pode usar LoadLibraryEx junto com GetProcAddress para marcar se uma API específica que você deseja usar estiver disponível em seu ambiente de execução atual e para obter um ponteiro de função a ser usado para chamar essa API. Confira Vinculação dinâmica em tempo de execução e Usando a vinculação dinâmica em tempo de execução para obter mais informações.