pressed. As the operating system and drivers are already loaded into memory, it takes less time to start up the system. Devices simply need to be powered up for the user to get started. A remote control handset or incoming modem call may similarly be used to wake the system up.
Both Windows 98 and Windows 2000 can now take full use of the Plug and Play hardware facilities to allow easy device insertion and removal. Again, drivers need to help in this process, allocating and releasing resources only as instructed by the Plug and Play Manager.
PC 99 specifies that ACPI, OnNow, and Plug and Play must be supported.:
PC 99 Conformance
Microsoft can certify your hardware and software as PC 99 compatible. To do this, contact their Windows Hardware Quality Labs at http://www.microsoft.com/hwtest/ or e-mail to [email protected]. When your driver passes these tests, Microsoft gives you a digital signature catalog file that you should include in your driver's INF file.
The Windows DDK includes a simplified version of Microsoft's own tests on their Hardware Compatibility Tests (HCT) CDs. Check out your driver with these tests before submitting your driver for full testing.
Appendix C
Direct Memory Access
This book does not cover Direct Memory Access (DMA) in detail. However, NT 3.51 and NT 4 driver writers will find that they must access the DMA system routines in a new way. All the same routines are there, you just have to call
Table C.1 shows the corresponding old and new routines. Just to reiterate, there is no kernel routine directly called
(*DmaAdapter->DmaOperations->PutDmaAdapter)(DmaAdapter);
Table C.1 Old and new DMA routines
Old | New | New DmaOperations routine | Description |
---|---|---|---|
HalGetAdapter | IoGetDmaAdapter | ||
PutDmaAdapter | Release DmaAdapter | ||
HalAllocateCommonBuffer | AllocateCommonBuffer | ||
HalFreeCommonBuffer | FreeCommonBuffer | ||
IoAllocateAdapterChannel | AllocateAdapterChannel | ||
IoFlushAdapterBuffers | FlushAdapterBuffers | ||
IoFreeAdapterChannel | FreeAdapterChannel | ||
IoFreeMapRegisters | FreeMapRegisters | ||
IoMapTransfer | MapTransfer | ||
HalGetDmaAlignmentRequirement | GetDmaAlignment | Get alignment requirements for DMA buffers | |
HalReadDmaCounter |