[aoe] Add explicit IRP dispatch, AddDevice routines
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 31 Dec 2010 04:45:17 +0000 (23:45 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 31 Dec 2010 04:51:20 +0000 (23:51 -0500)
commit2ee283db9440d463092b259b07845246160602e0
treec6f2e3c526a9afcfb0bf54349cb69efa2bacef18
parentf76c9a6938b3c4b7d32126b133a0be96563720dd
[aoe] Add explicit IRP dispatch, AddDevice routines

Lots of copying and pasting in this commit.  The idea is
to make the AoE driver slightly less dependent on the
WinVBlock driver.  We will request a PDO of the WinVBlock
bus, then when our driver's AddDevice callback is invoked
on that PDO, we establish the FDO and our AoE bus.

We will handle IRPs with our own IRP dispatch functions.
For bus IRPs, we use the WinVBlock bus library or our own
IRP_MJ_DEVICE_CONTROL handling.  For disk IRPs, we continue
to use the WinVBlock device and disk structures.

We aren't quite functional yet, as the PnpId logic needs to
be revisited.  If the AoE driver is unloaded after it has
created a PDO on the WinVBlock bus, a PnP ID query for that
PDO will attempt to call the PnpId routine in the unloaded
AoE driver (which is a bad thing).
src/aoe/bus.c
src/aoe/driver.c