- sorry folks

svn path=/trunk/; revision=38765
This commit is contained in:
Johannes Anderwald 2009-01-14 21:47:54 +00:00
parent 2de45ffbc0
commit e284c5d6a8
2 changed files with 45 additions and 4 deletions

View file

@ -119,7 +119,7 @@ PortClsPnp(
if ( ! NT_SUCCESS(status) )
{
DPRINT("StartDevice returned a failure code [0x%8x]\n", status);
resource_list->lpVtbl->Release(resource_list);
//resource_list->lpVtbl->Release(resource_list);
Irp->IoStatus.Status = status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
@ -261,14 +261,50 @@ PcCompleteIrp(
return STATUS_UNSUCCESSFUL;
}
static
NTSTATUS
NTAPI
IrpCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context)
{
KeSetEvent((PRKEVENT)Context, IO_NO_INCREMENT, FALSE);
return STATUS_SUCCESS;
}
/*
* @unimplemented
* @implemented
*/
NTSTATUS NTAPI
PcForwardIrpSynchronous(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
KEVENT Event;
PCExtension* DeviceExt;
NTSTATUS Status;
DPRINT1("PcForwardIrpSynchronous\n");
DeviceExt = (PCExtension*)DeviceObject->DeviceExtension;
/* initialize the notification event */
KeInitializeEvent(&Event, NotificationEvent, FALSE);
/* setup a completion routine */
IoSetCompletionRoutine(Irp, IrpCompletionRoutine, (PVOID)&Event, TRUE, FALSE, FALSE);
/* now call the driver */
Status = IoCallDriver(DeviceExt->PrevDeviceObject, Irp);
/* did the request complete yet */
if (Status == STATUS_PENDING)
{
/* not yet, lets wait a bit */
KeWaitForSingleObject(&Event, Executive, FALSE, FALSE, NULL);
Status = STATUS_SUCCESS;
}
DPRINT1("Returning status %x\n", Status);
return Status;
}

View file

@ -9,6 +9,7 @@
#include <ntddk.h>
#include <portcls.h>
#define YDEBUG
#include <debug.h>
#include <portcls.h>
@ -102,9 +103,13 @@ typedef struct
typedef struct
{
PDEVICE_OBJECT PhysicalDeviceObject;
PDEVICE_OBJECT PrevDeviceObject;
PCPFNSTARTDEVICE StartDevice;
KSDEVICE_HEADER KsDeviceHeader;
IAdapterPowerManagement * AdapterPowerManagement;
ULONG MaxSubDevices;
KSOBJECT_CREATE_ITEM * CreateItems;
IResourceList* resources;
LIST_ENTRY SubDeviceList;