Função IoIsWdmVersionAvailable (wdm.h)
A rotina IoIsWdmVersionAvailable verifica se uma determinada versão do WDM tem suporte no sistema operacional.
Sintaxe
BOOLEAN IoIsWdmVersionAvailable(
[in] UCHAR MajorVersion,
[in] UCHAR MinorVersion
);
Parâmetros
[in] MajorVersion
Especifica o número de versão principal do WDM solicitado.
[in] MinorVersion
Especifica o número de versão secundária do WDM solicitado.
Retornar valor
IoIsWdmVersionAvailable retornará TRUE se a versão do WDM que o sistema operacional fornece for maior ou igual ao número de versão do WDM que está sendo solicitado. Caso contrário, retornará FALSE.
Comentários
Os drivers devem usar a rotina RtlIsNtDdiVersionAvailable em vez da rotina IoIsWdmVersionAvailable .
Os drivers multiplataforma devem usar essa rotina para marcar a versão do WDM antes de executar as operações que variam de acordo com a plataforma ou que não têm suporte em todas as versões do WDM.
As constantes WDM_MAJORVERSION e WDM_MINORVERSION, definidas no arquivo de cabeçalho Wdm.h, especificam os números de versão principal e secundária do WDM para a versão atual do Windows. O seguinte lista a versão do WDM fornecida com cada sistema operacional.
Sistema operacional | Versão principal do WDM | Versão secundária do WDM |
---|---|---|
Windows 7 | 6 | 0x00 |
Windows Server 2008 R2 | 6 | 0x00 |
Windows Server 2008 | 6 | 0x00 |
Windows Vista | 6 | 0x00 |
Windows Server 2003 | 1 | 0x30 |
Windows XP | 1 | 0x20 |
Windows 2000 | 1 | 0x10 |
Windows Me | 1 | 0x05 |
Windows 98 | 1 | 0x00 |
Observe que o número de versão secundária é definido como um valor hexadecimal.
Versões posteriores do WDM dão suporte a todos os recursos disponíveis em versões anteriores do WDM; ou seja, cada versão do WDM é um superconjunto da versão anterior do WDM.
A chamada a seguir retorna TRUE em qualquer um dos sistemas operacionais listados, pois todos esses sistemas dão suporte a todos os recursos do WDM 1.0:
bVersion = IoIsWdmVersionAvailable(1,0);
O exemplo a seguir mostra como um driver pode detectar dinamicamente o sistema operacional atual:
if (IoIsWdmVersionAvailable(1, 0x10)) {
//
//If WDM 1.10 is supported, this is Windows 2000
//or better.
//
} else if (IoIsWdmVersionAvailable(1, 5)) {
//
//If WDM 1.05 is supported, this is Windows ME
//or better.
//
} else {
//
//WDM 1.0 is always supported, so this is Windows 98,
//Windows 98 SE, or better.
//
}
Como mostra o exemplo, chamar IoIsWdmVersionAvailable(1, 5) retorna TRUE no Windows Me, Windows 2000 e todos os sistemas operacionais bem-sucedidos, mas FALSE no Windows 98 e windows 98 SE.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |