VBoxUsbPwr.cpp revision 026b9946ff309252dd02571723a24ac899529244
/* $Id$ */
/** @file
* USB Power state Handling
*/
/*
* Copyright (C) 2011 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#include "VBoxUsbCmn.h"
{
}
{
return Status;
}
{
Assert(0);
}
typedef struct VBOXUSB_PWRDEV_CTX
{
{
}
{
if (pDevCtx)
{
if (NT_SUCCESS(Status))
{
return STATUS_MORE_PROCESSING_REQUIRED;
}
}
/* the "real" Status is stored in pIrp->IoStatus.Status,
* return success here to complete the Io */
return STATUS_SUCCESS;
}
static NTSTATUS vboxUsbPwrIoPostSysCompletion(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp, IN PVOID pvContext)
{
if (NT_SUCCESS(Status))
{
switch (pSl->MinorFunction)
{
case IRP_MN_SET_POWER:
{
break;
}
default:
{
break;
}
}
}
return STATUS_SUCCESS;
}
{
return STATUS_PENDING;
}
{
}
static NTSTATUS vboxUsbPwrIoPostDevCompletion(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp, IN PVOID pvContext)
{
if (pIrp->PendingReturned)
{
}
if (NT_SUCCESS(Status))
{
switch (pSl->MinorFunction)
{
case IRP_MN_SET_POWER:
{
break;
}
default:
{
break;
}
}
}
return STATUS_SUCCESS;
}
{
return STATUS_PENDING;
}
typedef struct VBOXUSB_IOASYNC_CTX
{
static VOID vboxUsbPwrIoWaitCompletionAndPostAsyncWorker(IN PDEVICE_OBJECT pDeviceObject, IN PVOID pvContext)
{
}
{
if (pCtx)
{
if (pWrkItem)
{
return STATUS_PENDING;
}
}
return Status;
}
{
{
if (NT_SUCCESS(Status))
return Status;
}
if (NT_SUCCESS(Status))
{
}
else
{
}
return Status;
}
{
{
case SystemPowerState:
{
}
case DevicePowerState:
{
}
default:
{
Assert(0);
}
}
}
{
}
{
{
if (NT_SUCCESS(Status))
return Status;
}
if (NT_SUCCESS(Status))
{
}
else
{
}
return Status;
}
{
{
case SystemPowerState:
{
}
case DevicePowerState:
{
}
default:
{
Assert(0);
}
}
}
{
AssertFailed();
}
{
switch (pSl->MinorFunction)
{
case IRP_MN_POWER_SEQUENCE:
{
}
case IRP_MN_QUERY_POWER:
{
}
case IRP_MN_SET_POWER:
{
}
case IRP_MN_WAIT_WAKE:
{
}
default:
{
// Assert(0);
}
}
}
{
switch (enmState)
{
{
return STATUS_DELETE_PENDING;
}
{
}
default:
{
}
}
}