Another message related to my ongoing disk driver work. Feel like I am
almost there.

I am adding support for partitioning in my KMDF disk driver and pretty much
following the reference WDM class disk driver. I.e., when a disk is
partitioned, I attempt to create a PDO for each partition and add them as
statically-enumerated children to the parent FDO. I run into several
problems while doing this.

1. I create PDOs with names that mimic what class driver does. I.e. name
is \device\harddiskX\nameY, which is then symbolically linked to
\device\harddiskX\partitionY. Calls to create the PDO and to create symbolic
link succeed. However, when I go and look with WINOBJ, the actual device
name is missing from the directory.

2. After PDOs have been created, the device will not get fully disabled
when asked to. All the shutdown callbacks execute correctly, I explicitly
disable each PDO with WdfPdoMarkMissing, yet an attempt to re-enable device
fails with code 38 (device still in memory).

3. For each PDO, I register MOUNTDEV_MOUNTED_DEVICE_GUID. The call to
register the interface succeeds, however the subsequent
WdfDeviceRetrieveDeviceInterfaceString call fails.

In general, is this a right approach to creating what are effectively
virtual devices (since all partitions reside on the same actual disk)? I am
effectively not using any PNP functionality for the PDOs... Should I be
perhaps creating control devices rather than PDOs?

Thanks