New for Kernel-Mode Driver Architecture
The Windows Driver Kit (WDK) that is released with Windows 7 includes the following new features for kernel-mode drivers.
To enable multiprocessor systems to contain more than 64 logical processors, a new set of core kernel library support routines has been added to support group affinities. These new routines include KeGetCurrentProcessorNumberEx, KeQueryActiveGroupCount, KeQueryActiveProcessorCountEx, and KeQueryGroupAffinity.
On x86-based processors that support the XSAVE and XRSTOR instructions, these instructions provide a flexible mechanism to save and restore extended processor state information. The new KeSaveExtendedProcessorState and KeRestoreExtendedProcessorState routines use these instructions if they are available.
The new KeSetCoalescableTimer routine is similar to the familiar KeSetTimerEx routine, except that it enables the caller to specify how much delay can be tolerated in the timer expiration times. Frequently, the operating system can use this information to coalesce two or more timer expirations into a single expiration. Timer coalescing helps to increase the length of idle periods, during which the processor can run in a low-power state.
A kernel-mode driver can call the new PoSetPowerRequest routine to override several types of default power behavior, which are specified as POWER_REQUEST_TYPE enumeration values. To restore the default behavior, the driver calls the new PoClearPowerRequest routine.
A kernel-mode driver can call the new IoRegisterContainerNotification routine to register to receive notifications of changes in the state of user sessions that the driver is interested in.
The new HalAllocateHardwareCounters and HalFreeHardwareCounters routines enable kernel-mode drivers to coordinate the sharing of hardware counter resources among thread profiling tools. The new KeQueryHardwareCounterConfiguration and KeSetHardwareCounterConfiguration routines enable kernel-mode drivers to configure hardware counters to be used by thread profiling tools.
The new KeQueryUnbiasedInterruptTime routine is similar to the familiar KeQueryInterruptTime routine, except that it does not add a bias to the interrupt counter value to compensate for periods in which increments of the counter are suspended.