http://git.etherboot.org
/
people
/
sha0
/
winvblock.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[bus,driver] Put bus IRP_MJ_POWER handler in driver
[people/sha0/winvblock.git]
/
src
/
winvblock
/
driver.c
diff --git
a/src/winvblock/driver.c
b/src/winvblock/driver.c
index
433d89c
..
d8b9b4c
100644
(file)
--- a/
src/winvblock/driver.c
+++ b/
src/winvblock/driver.c
@@
-80,6
+80,7
@@
static driver__dispatch_func driver__dispatch_scsi_;
static driver__dispatch_func driver__dispatch_pnp_;
static void STDCALL driver__unload_(IN PDRIVER_OBJECT);
static WV_F_DEV_DISPATCH WvDriverBusSysCtl_;
static driver__dispatch_func driver__dispatch_pnp_;
static void STDCALL driver__unload_(IN PDRIVER_OBJECT);
static WV_F_DEV_DISPATCH WvDriverBusSysCtl_;
+static WV_F_DEV_DISPATCH WvDriverBusPower_;
static LPWSTR STDCALL get_opt(IN LPWSTR opt_name) {
LPWSTR our_opts, the_opt;
static LPWSTR STDCALL get_opt(IN LPWSTR opt_name) {
LPWSTR our_opts, the_opt;
@@
-183,6
+184,7
@@
static NTSTATUS STDCALL driver__attach_fdo_(
WvDriverBus_.Dev.Self = WvDriverBus_.Fdo = fdo;
WvDriverBus_.Dev.IsBus = TRUE;
WvDriverBus_.Dev.IrpMj->SysCtl = WvDriverBusSysCtl_;
WvDriverBus_.Dev.Self = WvDriverBus_.Fdo = fdo;
WvDriverBus_.Dev.IsBus = TRUE;
WvDriverBus_.Dev.IrpMj->SysCtl = WvDriverBusSysCtl_;
+ WvDriverBus_.Dev.IrpMj->Power = WvDriverBusPower_;
WvDriverBus_.PhysicalDeviceObject = PhysicalDeviceObject;
fdo->Flags |= DO_DIRECT_IO; /* FIXME? */
fdo->Flags |= DO_POWER_INRUSH; /* FIXME? */
WvDriverBus_.PhysicalDeviceObject = PhysicalDeviceObject;
fdo->Flags |= DO_DIRECT_IO; /* FIXME? */
fdo->Flags |= DO_POWER_INRUSH; /* FIXME? */
@@
-572,3
+574,10
@@
static NTSTATUS STDCALL WvDriverBusSysCtl_(IN WV_SP_DEV_T dev, IN PIRP irp) {
return WvBusSysCtl(bus, irp);
}
return WvBusSysCtl(bus, irp);
}
+
+/* Pass a power IRP to the bus. */
+static NTSTATUS STDCALL WvDriverBusPower_(IN WV_SP_DEV_T dev, IN PIRP irp) {
+ WV_SP_BUS_T bus = WvBusFromDev(dev);
+
+ return WvBusPower(bus, irp);
+ }