www.pudn.com > bulkUSB.rar > bulkpwr.h


/*++ 
 
Copyright (c) 2000  Microsoft Corporation 
 
Module Name: 
 
    bulkpwr.h 
 
Abstract: 
 
Environment: 
 
    Kernel mode 
 
Notes: 
 
  	Copyright (c) 2000 Microsoft Corporation.   
    All Rights Reserved. 
 
--*/ 
 
#ifndef _BULKUSB_POWER_H 
#define _BULKUSB_POWER_H 
 
typedef struct _POWER_COMPLETION_CONTEXT { 
    PDEVICE_OBJECT DeviceObject; 
    PIRP           SIrp; 
} POWER_COMPLETION_CONTEXT, *PPOWER_COMPLETION_CONTEXT; 
 
typedef struct _WORKER_THREAD_CONTEXT { 
    PDEVICE_OBJECT DeviceObject; 
    PIRP           Irp; 
    PIO_WORKITEM   WorkItem; 
} WORKER_THREAD_CONTEXT, *PWORKER_THREAD_CONTEXT; 
 
NTSTATUS 
BulkUsb_DispatchPower( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
NTSTATUS 
HandleSystemQueryPower( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
NTSTATUS 
HandleSystemSetPower( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
NTSTATUS 
HandleDeviceQueryPower( 
    PDEVICE_OBJECT DeviceObject, 
    PIRP           Irp 
    ); 
 
NTSTATUS 
SysPoCompletionRoutine( 
    IN PDEVICE_OBJECT    DeviceObject, 
    IN PIRP              Irp, 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
VOID 
SendDeviceIrp( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
VOID 
DevPoCompletionRoutine( 
    IN PDEVICE_OBJECT   DeviceObject,  
    IN UCHAR            MinorFunction, 
    IN POWER_STATE      PowerState, 
    IN PVOID            Context, 
    IN PIO_STATUS_BLOCK IoStatus 
    ); 
 
NTSTATUS 
HandleDeviceSetPower( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
NTSTATUS 
FinishDevPoUpIrp( 
    IN PDEVICE_OBJECT    DeviceObject, 
    IN PIRP              Irp, 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
NTSTATUS 
SetDeviceFunctional( 
    IN PDEVICE_OBJECT    DeviceObject, 
    IN PIRP              Irp, 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
NTSTATUS 
FinishDevPoDnIrp( 
    IN PDEVICE_OBJECT    DeviceObject, 
    IN PIRP              Irp, 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
NTSTATUS 
HoldIoRequests( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
VOID 
HoldIoRequestsWorkerRoutine( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PVOID          Context 
    ); 
 
NTSTATUS 
QueueRequest( 
    IN OUT PDEVICE_EXTENSION DeviceExtension, 
    IN PIRP                  Irp 
    ); 
 
VOID 
CancelQueued( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP           Irp 
    ); 
 
NTSTATUS 
WaitWakeCompletionRoutine( 
    IN PDEVICE_OBJECT    DeviceObject, 
    IN PIRP              Irp, 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
NTSTATUS 
IssueWaitWake( 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
VOID 
CancelWaitWake( 
    IN PDEVICE_EXTENSION DeviceExtension 
    ); 
 
VOID 
WaitWakeCallback(  
    IN PDEVICE_OBJECT   DeviceObject, 
    IN UCHAR            MinorFunction, 
    IN POWER_STATE      PowerState, 
    IN PVOID            Context, 
    IN PIO_STATUS_BLOCK IoStatus 
    ); 
 
PCHAR 
PowerMinorFunctionString ( 
    IN UCHAR MinorFunction 
    ); 
 
#endif