understanding storage stack

according to my understanding:
1.upper filter driver is a device object in the:
“a-FDO’s-Device-obj”.AttachedDevice
2.lower filter driver is a device object in the:
“a-PDO’s-Device-obj”.AttachedDevice

if points 1 and 2 are true:

FDO and PDO are logical concepts.
two drivers cooperate to create a “logical device instance.”
eg. SCSI disk PDO (scsiport.sys) + SCSI disk FDO(disk.sys) = SCSI DISK

Partition Manager is an upper-level filter driver.
Hence it attaches to SCSI DISK FDO(disk.sys).
Here Partition Mngr. is suppose to intercept QDR and pass to volume driver.

Questions>
a. QDR is a pnp function. And thus handled by “a PDO”.
Partition mngr. which has been attached to a FDO will never see it.
How then does it captures?

b. Partition mngr. is suppose to communicate with volume mngr. with “private interface”.
what is a private interface? according to my understanding the only way drivers communicate is via IOCTLS or FSCTLS.

Reply highly appreciated.

> 5.

Questions>
a. QDR is a pnp function. And thus handled by “a PDO”.
Partition mngr. which has been attached to a FDO will never see it.
How then does it captures?

Query Device Relations (bus relations) is sent to an FDO (really to the top
device on a stack), effectively making it a bus, and tells the OS the PDO’s
of its children. The OS then sends some PnP irps to query some properties of
the PDO’s, like the device id, and instance id, resource requirements, and
then layers the FDO and filters over the PDO, eventually sending a PnP start
irp to the top of a stack, which propagates down to the PDO.

Jan

If I call it correctly , when PartMgr startting up it will call
IoRegisterPlugPlayNotification to register a device interface change
notification , so , if VolMgr come into being PrtMgr will get the
interface.

2010/9/18 :
> what is a private interface?

> a. QDR is a pnp function. And thus handled by “a PDO”.

Any DO in the stack can handle QDR, upper and lower filters too.

b. Partition mngr. is suppose to communicate with volume mngr. with “private interface”.
what is a private interface?

Undocumented set of calls between VolMgr and PartMgr. Can be IOCTLs to undocumented VolMgr’s DO or such.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com