Glossary

This is meant to be an organic document that grows over time.  If the term you are looking for is not in this a list, you should look at the DDK docs

Class Driver: A driver, usually written by Microsoft, which generically controls devices of a certain class. For instance, cdrom.sys controls all CD ROM drives on the machine. Typically a class driver exists at a level of abstraction above the hardware. In this example, cdrom.sys uses SRBs to communicate with the CD ROM drive instance, the PDO for the CD ROM driver translates the SRBs into bus specific commands.

Dx:  short hand for a lower device power state.  A low power state can be D1, D2, or D3.   So, the 'x' represents any number other then D0 (which is the running/on state).  The meaning of each Dx state depends on the bus that the device is attached to, D2 means one thing to a PCI connected device and something else to a USB connected device.

FDO:  Functional Device Object.  This is usually the device object that exposes an I/O interface to an applicaiton or another driver.

FiDO:  Filter Device Object.  A filter device object can sit in between the PDO and FDO, or above the FDO.  A device stack can have multiple filters.  Typically a filter will intercept specific PIRPs and send the rest of the PIRPs down the device stack.

I/O interface:  This is the set of PIRPs which a device exposes to an application or driver.  This includes major irp types (like IRP_MJ_READ, IRP_MJ_WRITE, IRP_MJ_DEVICE_CONTROL).  This will also include specific device IO control codes for IRP_MJ_DEVICE_CONTROL.  Typically, if the I/O interface does not support a

Power Policy Owner (PPO):   this is the driver in the stack that decides when to send power irps to the device stack.  A PPO will always send device power irps and can optionally send wait wake irps as well.

PDO:  Physical device object.  This is abstract instance of the device.  A PDO is enumerated by a parent device object.  Read this entry for more about PDOs.

Sx:  short hand for a lower system power state.  Standby is S1, S2 or S3.  Hibernate is S4. Shutdown is S5.  So, the 'x' represents any number other then S0 (which is the running/on state).