/*++
*******************************************************************************
* Copyright (c) 1999-2000 Digi International Inc., All Rights Reserved				
* 																										
* This software contains proprietary and confidential information of Digi		
* International Inc.  By accepting transfer of this copy, Recipient agrees		
* to retain this software in confidence, to prevent disclosure to others,		
* and to make no use of this software other than that for which it was			
* delivered.  This is an unpublished copyrighted work of Digi International	
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly	
* prohibited.																						
* 																										
* Restricted Rights Legend																		
*																										
* Use, duplication, or disclosure by the Government is subject to					
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in			
* Technical Data and Computer Software clause at DFARS 252.227-7031 or			
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -				
* Restricted Rights at 48 CFR 52.227-19, as applicable.								
*																										
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343				
*																										
*******************************************************************************

Module Name:

   Asynpnp.h

Abstract:


Author:
	Sandy Haapala

--*/
#ifndef ASYNPOWER_H
#define ASYNPOWER_H

#if NT5_BUILD

/* --------------------------------------------------------------------------*/
/* -- Local data:                                                            */
/* --------------------------------------------------------------------------*/

typedef struct _POWERCOMPLETIONCONTEXT
{
  PKEVENT pEvent;
  NTSTATUS Status;
  PDEVICE_OBJECT pFdo;

} POWERCOMPLETIONCONTEXT;

/* --------------------------------------------------------------------------*/
/* -- Prototypes:                                                            */
/* --------------------------------------------------------------------------*/

NTSTATUS AsynPowerDispatch( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS DefaultPowerHandler( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleQueryPower(IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp);
NTSTATUS HandleSetPower( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleAddSystemPower( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleRemoveSystemPower( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleAddDevicePower( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleRemoveDevicePower( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp );
NTSTATUS HandleAddPowerCompletion( IN PDEVICE_OBJECT pFuncDeviceObject, IN PIRP Irp, IN PVOID NotUsed );

NTSTATUS SendDeviceSetPower( PDEVICE_OBJECT pFuncDeviceObject, DEVICE_POWER_STATE DevPower, BOOLEAN wait);
VOID     SendDeviceSetPowerCompletion( PDEVICE_OBJECT junk, UCHAR MinorFunction, POWER_STATE State,
                                       POWERCOMPLETIONCONTEXT* context, PIO_STATUS_BLOCK pstatus);
VOID     SetDevicePowerState(PDEVICE_OBJECT pFuncDeviceObject, DEVICE_POWER_STATE DevPower);
NTSTATUS CompleteRequest( IN PIRP Irp, IN NTSTATUS Status, IN ULONG Info);

VOID SetPowerD3( IN PASYN_PORT_EXT pExt );
VOID SetPowerD0( IN PASYN_PORT_EXT pExt );

#endif // NT5_BUILD
#endif // ASYNCPOWER_H
