RtlVerifyVersionInfo and other version stuff in Windows 2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out
that RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and
didn’t find any of the above routines. More over I read that Microsoft
is not going to release SP5 for Windows 2000. Will these routines be
available in some future possible update pack for Windows 2000 or it’s
some kind of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4.
It seems that NTOSKRNL doesn’t call ACPI related idle routine, I
figured out this after I compared idle loop call stacks for Windows
2000 SP4 and Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Doron, thank you very much for your
quick response.

Currently I do it like you described it, I use
MmGetSystemRoutineAddress(), but it’s some kind of inconvenient because
I need to use VER_SET_CONDITION macro which in turn calls the
undocumented routine VerSetConditionMask() and I should also call
MmGetSystemRoutineAddress() for this kernel function to make my driver
loadable on Windows 2000.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From:xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

You need to not use VER_SET_CONDITION in your code, rather modify the
macro’s logic to use a function pointer. For instance, something that
looks like this, assuming pVerSetConditionMask is the result of a
successful call to MmGetSystemRoutineAddress(“VerSetConditionMask”):

// Check for XP
info.dwMajorVersion = 5;
info.dwMinorVersion = 1;
condition = pVerSetConditionMask(condition, VER_MAJORVERSION,
VER_EQUAL);
condition = pVerSetConditionMask(condition, VER_MINORVERSION,
VER_EQUAL);

// Check for XP gold and SP1 by checking for less then SP2
info.wServicePackMajor = 2;
condition = pVerSetConditionMask(condition, VER_SERVICEPACKMAJOR,
VER_LESS);

… etc etc …

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 9:53 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Doron, thank you very much for your quick response.

Currently I do it like you described it, I use
MmGetSystemRoutineAddress(), but it’s some kind of inconvenient because
I need to use VER_SET_CONDITION macro which in turn calls the
undocumented routine VerSetConditionMask() and I should also call
MmGetSystemRoutineAddress() for this kernel function to make my driver
loadable on Windows 2000.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Aye, here’s the rub, with all of this “build with lowest common denominator
Windows 2000 build environment and MmGetSystemRoutineAddress for the
functions available in later Windows versions”. It means plain and simple we
do not have competent ddk header files for the features availalable in later
Windows versions, so we have no choice but to read the header files, and cut
and paste and hack.

“Doron Holan” wrote in message
news:xxxxx@ntdev…
You need to not use VER_SET_CONDITION in your code, rather modify the
macro’s logic to use a function pointer. For instance, something that
looks like this, assuming pVerSetConditionMask is the result of a
successful call to MmGetSystemRoutineAddress(“VerSetConditionMask”):

// Check for XP
info.dwMajorVersion = 5;
info.dwMinorVersion = 1;
condition = pVerSetConditionMask(condition, VER_MAJORVERSION,
VER_EQUAL);
condition = pVerSetConditionMask(condition, VER_MINORVERSION,
VER_EQUAL);

// Check for XP gold and SP1 by checking for less then SP2
info.wServicePackMajor = 2;
condition = pVerSetConditionMask(condition, VER_SERVICEPACKMAJOR,
VER_LESS);

… etc etc …

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 9:53 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Doron, thank you very much for your quick response.

Currently I do it like you described it, I use
MmGetSystemRoutineAddress(), but it’s some kind of inconvenient because
I need to use VER_SET_CONDITION macro which in turn calls the
undocumented routine VerSetConditionMask() and I should also call
MmGetSystemRoutineAddress() for this kernel function to make my driver
loadable on Windows 2000.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Perhaps somebody ought to file a bug so that this gets fixed in the beta
of the vista ddk?

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Lyndon J. Clarke
Sent: Tuesday, June 13, 2006 2:40 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Aye, here’s the rub, with all of this “build with lowest common
denominator
Windows 2000 build environment and MmGetSystemRoutineAddress for the
functions available in later Windows versions”. It means plain and
simple we
do not have competent ddk header files for the features availalable in
later
Windows versions, so we have no choice but to read the header files, and
cut
and paste and hack.

“Doron Holan” wrote in message
news:xxxxx@ntdev…
You need to not use VER_SET_CONDITION in your code, rather modify the
macro’s logic to use a function pointer. For instance, something that
looks like this, assuming pVerSetConditionMask is the result of a
successful call to MmGetSystemRoutineAddress(“VerSetConditionMask”):

// Check for XP
info.dwMajorVersion = 5;
info.dwMinorVersion = 1;
condition = pVerSetConditionMask(condition, VER_MAJORVERSION,
VER_EQUAL);
condition = pVerSetConditionMask(condition, VER_MINORVERSION,
VER_EQUAL);

// Check for XP gold and SP1 by checking for less then SP2
info.wServicePackMajor = 2;
condition = pVerSetConditionMask(condition, VER_SERVICEPACKMAJOR,
VER_LESS);

… etc etc …

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 9:53 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Doron, thank you very much for your quick response.

Currently I do it like you described it, I use
MmGetSystemRoutineAddress(), but it’s some kind of inconvenient because
I need to use VER_SET_CONDITION macro which in turn calls the
undocumented routine VerSetConditionMask() and I should also call
MmGetSystemRoutineAddress() for this kernel function to make my driver
loadable on Windows 2000.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

There was a bug against this already (Actually, I thought this
particular issue was fixed already), but I will raise the flag again…

d

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Roddy, Mark
Sent: Tuesday, June 13, 2006 11:57 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Perhaps somebody ought to file a bug so that this gets fixed in the beta
of the vista ddk?

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Lyndon J. Clarke
Sent: Tuesday, June 13, 2006 2:40 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Aye, here’s the rub, with all of this “build with lowest common
denominator
Windows 2000 build environment and MmGetSystemRoutineAddress for the
functions available in later Windows versions”. It means plain and
simple we
do not have competent ddk header files for the features availalable in
later
Windows versions, so we have no choice but to read the header files, and
cut
and paste and hack.

“Doron Holan” wrote in message
news:xxxxx@ntdev…
You need to not use VER_SET_CONDITION in your code, rather modify the
macro’s logic to use a function pointer. For instance, something that
looks like this, assuming pVerSetConditionMask is the result of a
successful call to MmGetSystemRoutineAddress(“VerSetConditionMask”):

// Check for XP
info.dwMajorVersion = 5;
info.dwMinorVersion = 1;
condition = pVerSetConditionMask(condition, VER_MAJORVERSION,
VER_EQUAL);
condition = pVerSetConditionMask(condition, VER_MINORVERSION,
VER_EQUAL);

// Check for XP gold and SP1 by checking for less then SP2
info.wServicePackMajor = 2;
condition = pVerSetConditionMask(condition, VER_SERVICEPACKMAJOR,
VER_LESS);

… etc etc …

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 9:53 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RtlVerifyVersionInfo and other version stuff in
Windows 2000 SP4 Rollup Update Pack

Doron, thank you very much for your quick response.

Currently I do it like you described it, I use
MmGetSystemRoutineAddress(), but it’s some kind of inconvenient because
I need to use VER_SET_CONDITION macro which in turn calls the
undocumented routine VerSetConditionMask() and I should also call
MmGetSystemRoutineAddress() for this kernel function to make my driver
loadable on Windows 2000.

Konstantin Manurin

The OS markings on these DDIs is incorrect, they are not available on
win2k, nor do I know of any plans to make them available. You have to
use PsGetVersion on win2k and use MmGetSystemRoutineAddress to use these
functions on later OSs if you are creating a multiplatform driver (this
is what KMDF does)

d

– I can spell, I just can’t type.
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Konstantin
Manurin
Sent: Tuesday, June 13, 2006 3:13 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RtlVerifyVersionInfo and other version stuff in Windows
2000 SP4 Rollup Update Pack

Hi guys,

I looked thru NTDDK.H file from the latest WDK 5384 and figured out that
RtlVerifyVersionInfo(), RtlGetVersion() and VerSetConditionMask()
routines are marked as available for Windows 2000, they are placed in
#if (NTDDI_VERSION >= NTDDI_WIN2K) blocks. But then I checked
NTOSKRNL.EXE exports from Windows 2000 SP4 Rollup Update Pack and didn’t
find any of the above routines. More over I read that Microsoft is not
going to release SP5 for Windows 2000. Will these routines be available
in some future possible update pack for Windows 2000 or it’s some kind
of error in NTDDK.H?

And one more question. I installed Windows 2000 SP4 Rollup Update Pack,
but it has some strange behavior during idle loop. While my test
computer runs under Windows 2000 SP4 Rollup Update Pack, a processor
cooler rotates at full speed though this computer is in fully idle
state. But I don’t observe such behavior running on Windows 2000 SP4. It
seems that NTOSKRNL doesn’t call ACPI related idle routine, I figured
out this after I compared idle loop call stacks for Windows 2000 SP4 and
Windows 2000 SP4 Rollup Update Pack.

Thanks beforehand, any suggestions will be highly appreciated.

Konstantin Manurin


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer