ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

pdo.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS ISA PnP Bus driver
00003  * FILE:            pdo.c
00004  * PURPOSE:         PDO-specific code
00005  * PROGRAMMERS:     Cameron Gutman (cameron.gutman@reactos.org)
00006  */
00007 #include <isapnp.h>
00008 
00009 #define NDEBUG
00010 #include <debug.h>
00011 
00012 NTSTATUS
00013 NTAPI
00014 IsaPdoQueryDeviceRelations(
00015   IN PISAPNP_LOGICAL_DEVICE LogDev,
00016   IN PIRP Irp,
00017   IN PIO_STACK_LOCATION IrpSp)
00018 {
00019   PDEVICE_RELATIONS DeviceRelations;
00020 
00021   if (IrpSp->Parameters.QueryDeviceRelations.Type != TargetDeviceRelation)
00022       return Irp->IoStatus.Status;
00023 
00024   DeviceRelations = ExAllocatePool(PagedPool, sizeof(*DeviceRelations));
00025   if (!DeviceRelations)
00026       return STATUS_INSUFFICIENT_RESOURCES;
00027 
00028   DeviceRelations->Count = 1;
00029   DeviceRelations->Objects[0] = LogDev->Common.Self;
00030   ObReferenceObject(LogDev->Common.Self);
00031 
00032   Irp->IoStatus.Information = (ULONG_PTR)DeviceRelations;
00033 
00034   return STATUS_SUCCESS;
00035 }
00036 
00037 NTSTATUS
00038 NTAPI
00039 IsaPdoPnp(
00040   IN PISAPNP_LOGICAL_DEVICE LogDev,
00041   IN PIRP Irp,
00042   IN PIO_STACK_LOCATION IrpSp)
00043 {
00044   NTSTATUS Status = Irp->IoStatus.Status;
00045 
00046   switch (IrpSp->MinorFunction)
00047   {
00048      case IRP_MN_START_DEVICE:
00049        Status = IsaHwActivateDevice(LogDev);
00050 
00051        if (NT_SUCCESS(Status))
00052            LogDev->Common.State = dsStarted;
00053        break;
00054 
00055      case IRP_MN_STOP_DEVICE:
00056        Status = IsaHwDeactivateDevice(LogDev);
00057 
00058        if (NT_SUCCESS(Status))
00059            LogDev->Common.State = dsStopped;
00060        break;
00061 
00062      case IRP_MN_QUERY_DEVICE_RELATIONS:
00063        Status = IsaPdoQueryDeviceRelations(LogDev, Irp, IrpSp);
00064        break;
00065 
00066      case IRP_MN_QUERY_RESOURCES:
00067        DPRINT1("IRP_MN_QUERY_RESOURCES is UNIMPLEMENTED!\n");
00068        break;
00069 
00070      case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
00071        DPRINT1("IRP_MN_QUERY_RESOURCE_REQUIREMENTS is UNIMPLEMENTED!\n");
00072        break;
00073 
00074      default:
00075        DPRINT1("Unknown PnP code: %x\n", IrpSp->MinorFunction);
00076        break;
00077   }
00078 
00079   Irp->IoStatus.Status = Status;
00080   IoCompleteRequest(Irp, IO_NO_INCREMENT);
00081 
00082   return Status;
00083 }

Generated on Fri May 25 2012 04:25:45 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.