1 // Copyright (c) 2004, Antony C. Roberts
3 // Use of this file is subject to the terms
4 // described in the LICENSE.TXT file that
5 // accompanies this file.
7 // Your use of this file indicates your
8 // acceptance of the terms described in
11 // http://www.freebt.net
13 #ifndef _FREEBT_POWER_H
14 #define _FREEBT_POWER_H
16 typedef struct _POWER_COMPLETION_CONTEXT
18 PDEVICE_OBJECT DeviceObject
;
21 } POWER_COMPLETION_CONTEXT
, *PPOWER_COMPLETION_CONTEXT
;
23 typedef struct _WORKER_THREAD_CONTEXT
25 PDEVICE_OBJECT DeviceObject
;
27 PIO_WORKITEM WorkItem
;
29 } WORKER_THREAD_CONTEXT
, *PWORKER_THREAD_CONTEXT
;
35 NTSTATUS NTAPI
FreeBT_DispatchPower(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
36 NTSTATUS NTAPI
HandleSystemQueryPower(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
37 NTSTATUS NTAPI
HandleSystemSetPower(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
38 NTSTATUS NTAPI
HandleDeviceQueryPower(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
39 NTSTATUS NTAPI
SysPoCompletionRoutine(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
, IN PDEVICE_EXTENSION DeviceExtension
);
40 VOID NTAPI
SendDeviceIrp(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
41 VOID NTAPI
DevPoCompletionRoutine(
42 IN PDEVICE_OBJECT DeviceObject
,
43 IN UCHAR MinorFunction
,
44 IN POWER_STATE PowerState
,
46 IN PIO_STATUS_BLOCK IoStatus
49 NTSTATUS NTAPI
HandleDeviceSetPower(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
50 NTSTATUS NTAPI
FinishDevPoUpIrp(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
, IN PDEVICE_EXTENSION DeviceExtension
);
51 NTSTATUS NTAPI
SetDeviceFunctional(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
, IN PDEVICE_EXTENSION DeviceExtension
);
52 NTSTATUS NTAPI
FinishDevPoDnIrp(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
, IN PDEVICE_EXTENSION DeviceExtension
);
53 NTSTATUS NTAPI
HoldIoRequests(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
54 VOID NTAPI
HoldIoRequestsWorkerRoutine(IN PDEVICE_OBJECT DeviceObject
, IN PVOID Context
);
55 NTSTATUS NTAPI
QueueRequest(IN OUT PDEVICE_EXTENSION DeviceExtension
, IN PIRP Irp
);
56 VOID NTAPI
CancelQueued(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
);
57 NTSTATUS NTAPI
WaitWakeCompletionRoutine(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
, IN PDEVICE_EXTENSION DeviceExtension
);
58 NTSTATUS NTAPI
IssueWaitWake(IN PDEVICE_EXTENSION DeviceExtension
);
59 VOID NTAPI
CancelWaitWake(IN PDEVICE_EXTENSION DeviceExtension
);
60 VOID NTAPI
WaitWakeCallback(
61 IN PDEVICE_OBJECT DeviceObject
,
62 IN UCHAR MinorFunction
,
63 IN POWER_STATE PowerState
,
65 IN PIO_STATUS_BLOCK IoStatus
68 PCHAR NTAPI
PowerMinorFunctionString(IN UCHAR MinorFunction
);