- Remove old fdc code

svn path=/trunk/; revision=52068
This commit is contained in:
Cameron Gutman 2011-06-03 00:20:01 +00:00
parent 2706c9b8b3
commit 45491b7e75
5 changed files with 0 additions and 787 deletions

View file

@ -1,153 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Serial enumerator driver
* FILE: drivers/storage/fdc/fdc/fdc.c
* PURPOSE: Floppy class driver entry point
*
* PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
*/
#include <ntddk.h>
#include "fdc.h"
#define NDEBUG
#include <debug.h>
static NTSTATUS
NTAPI
FdcAddDevice(IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PhysicalDeviceObject)
{
NTSTATUS Status;
PDEVICE_OBJECT DeviceObject;
PFDC_FDO_EXTENSION DeviceExtension;
Status = IoCreateDevice(DriverObject,
sizeof(FDC_FDO_EXTENSION),
NULL,
FILE_DEVICE_CONTROLLER,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&DeviceObject);
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to create device object (Status: 0x%x)\n", Status);
return Status;
}
DeviceExtension = DeviceObject->DeviceExtension;
DeviceExtension->Common.IsFDO = TRUE;
DeviceExtension->Common.DeviceObject = DeviceObject;
DeviceExtension->Common.DriverObject = DriverObject;
InitializeListHead(&DeviceExtension->FloppyDriveList);
DeviceExtension->FloppyDriveListCount = 0;
KeInitializeSpinLock(&DeviceExtension->FloppyDriveListLock);
DeviceObject->Flags |= DO_POWER_PAGABLE;
DeviceExtension->Ldo = IoAttachDeviceToDeviceStack(DeviceObject,
PhysicalDeviceObject);
if (!DeviceExtension->Ldo)
{
DPRINT1("Failed to attach to device stack\n");
IoDeleteDevice(DeviceObject);
return STATUS_UNSUCCESSFUL;
}
DPRINT("FdcAddDevice completed successfully\n");
return STATUS_SUCCESS;
}
static NTSTATUS
NTAPI
FdcPnpDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_COMMON_EXTENSION DevExt = DeviceObject->DeviceExtension;
if (DevExt->IsFDO)
return FdcFdoPnpDispatch(DeviceObject, Irp);
else
return FdcPdoPnpDispatch(DeviceObject, Irp);
}
static NTSTATUS
NTAPI
FdcPowerDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_COMMON_EXTENSION DevExt = DeviceObject->DeviceExtension;
if (DevExt->IsFDO)
return FdcFdoPowerDispatch(DeviceObject, Irp);
else
return FdcPdoPowerDispatch(DeviceObject, Irp);
}
static NTSTATUS
NTAPI
FdcDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_COMMON_EXTENSION DevExt = DeviceObject->DeviceExtension;
if (DevExt->IsFDO)
return FdcFdoDeviceControlDispatch(DeviceObject, Irp);
else
return FdcPdoDeviceControlDispatch(DeviceObject, Irp);
}
static NTSTATUS
NTAPI
FdcInternalDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_COMMON_EXTENSION DevExt = DeviceObject->DeviceExtension;
if (DevExt->IsFDO)
return FdcFdoInternalDeviceControlDispatch(DeviceObject, Irp);
else
return FdcPdoInternalDeviceControlDispatch(DeviceObject, Irp);
}
static NTSTATUS
NTAPI
FdcCreateClose(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNREFERENCED_PARAMETER(DeviceObject);
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = FILE_OPENED;
return STATUS_SUCCESS;
}
static VOID
NTAPI
FdcUnload(IN PDRIVER_OBJECT DriverObject)
{
DPRINT1("FDC Unloaded\n");
}
NTSTATUS
NTAPI
DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegPath)
{
DriverObject->DriverUnload = FdcUnload;
DriverObject->DriverExtension->AddDevice = FdcAddDevice;
DriverObject->MajorFunction[IRP_MJ_CREATE] = FdcCreateClose;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = FdcCreateClose;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FdcDeviceControlDispatch;
DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = FdcInternalDeviceControlDispatch;
DriverObject->MajorFunction[IRP_MJ_PNP] = FdcPnpDispatch;
DriverObject->MajorFunction[IRP_MJ_POWER] = FdcPowerDispatch;
return STATUS_SUCCESS;
}

View file

@ -1,77 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Serial enumerator driver
* FILE: drivers/storage/fdc/fdc/fdc.h
* PURPOSE: Floppy class driver header
*
* PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
*/
#include <wdm.h>
int _cdecl swprintf(const WCHAR *, ...);
typedef struct _FDC_COMMON_EXTENSION
{
BOOLEAN IsFDO;
PDEVICE_OBJECT DeviceObject;
PDRIVER_OBJECT DriverObject;
} FDC_COMMON_EXTENSION, *PFDC_COMMON_EXTENSION;
typedef struct _FDC_FDO_EXTENSION
{
FDC_COMMON_EXTENSION Common;
LIST_ENTRY FloppyDriveList;
ULONG FloppyDriveListCount;
KSPIN_LOCK FloppyDriveListLock;
PDEVICE_OBJECT Ldo;
CM_FLOPPY_DEVICE_DATA FloppyDeviceData;
} FDC_FDO_EXTENSION, *PFDC_FDO_EXTENSION;
typedef struct _FDC_PDO_EXTENSION
{
FDC_COMMON_EXTENSION Common;
ULONG FloppyNumber;
PFDC_FDO_EXTENSION FdoDevExt;
LIST_ENTRY ListEntry;
} FDC_PDO_EXTENSION, *PFDC_PDO_EXTENSION;
/* fdo.c */
NTSTATUS
FdcFdoPnpDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcFdoPowerDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcFdoDeviceControlDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcFdoInternalDeviceControlDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
/* pdo.c */
NTSTATUS
FdcPdoPnpDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcPdoPowerDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcPdoDeviceControlDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
FdcPdoInternalDeviceControlDispatch(PDEVICE_OBJECT DeviceObject,
PIRP Irp);

View file

@ -1,5 +0,0 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "Floppy Disk Controller Driver\0"
#define REACTOS_STR_INTERNAL_NAME "fdc\0"
#define REACTOS_STR_ORIGINAL_FILENAME "fdc.sys\0"
#include <reactos/version.rc>

View file

@ -1,292 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Serial enumerator driver
* FILE: drivers/storage/fdc/fdc/fdo.c
* PURPOSE: Floppy class driver FDO functions
*
* PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
*/
#include <wdm.h>
#include "fdc.h"
#define NDEBUG
#include <debug.h>
static IO_COMPLETION_ROUTINE ForwardIrpAndWaitCompletion;
static NTSTATUS NTAPI
ForwardIrpAndWaitCompletion(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context)
{
UNREFERENCED_PARAMETER(DeviceObject);
if (Irp->PendingReturned)
KeSetEvent((PKEVENT)Context, IO_NO_INCREMENT, FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
}
NTSTATUS NTAPI
ForwardIrpAndWait(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
KEVENT Event;
NTSTATUS Status;
PDEVICE_OBJECT LowerDevice = ((PFDC_FDO_EXTENSION)DeviceObject->DeviceExtension)->Ldo;
ASSERT(LowerDevice);
KeInitializeEvent(&Event, NotificationEvent, FALSE);
IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine(Irp, ForwardIrpAndWaitCompletion, &Event, TRUE, TRUE, TRUE);
Status = IoCallDriver(LowerDevice, Irp);
if (Status == STATUS_PENDING)
{
Status = KeWaitForSingleObject(&Event, Suspended, KernelMode, FALSE, NULL);
if (NT_SUCCESS(Status))
Status = Irp->IoStatus.Status;
}
return Status;
}
static NTSTATUS
AddFloppyDiskDevice(PFDC_FDO_EXTENSION DevExt)
{
NTSTATUS Status;
PFDC_PDO_EXTENSION PdoDevExt;
PDEVICE_OBJECT DeviceObject;
Status = IoCreateDevice(DevExt->Common.DriverObject,
sizeof(FDC_PDO_EXTENSION),
NULL,
FILE_DEVICE_CONTROLLER,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&DeviceObject);
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to create PDO device (Status: 0x%x)\n", Status);
return Status;
}
PdoDevExt = DeviceObject->DeviceExtension;
PdoDevExt->Common.IsFDO = FALSE;
PdoDevExt->Common.DeviceObject = DeviceObject;
PdoDevExt->Common.DriverObject = DevExt->Common.DriverObject;
PdoDevExt->FdoDevExt = DevExt;
PdoDevExt->FloppyNumber = DevExt->FloppyDriveListCount++;
ExInterlockedInsertTailList(&DevExt->FloppyDriveList,
&PdoDevExt->ListEntry,
&DevExt->FloppyDriveListLock);
DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
return STATUS_SUCCESS;
}
static NTSTATUS
EnumerateDevices(PFDC_FDO_EXTENSION DevExt)
{
/* FIXME: Hardcoded */
if (DevExt->FloppyDriveListCount == 0)
return AddFloppyDiskDevice(DevExt);
return STATUS_SUCCESS;
}
static NTSTATUS
FdcFdoQueryBusRelations(PFDC_FDO_EXTENSION DevExt,
PIRP Irp)
{
PDEVICE_RELATIONS DeviceRelations;
KIRQL OldIrql;
ULONG i;
PFDC_PDO_EXTENSION PdoDevExt;
PLIST_ENTRY ListEntry;
NTSTATUS Status;
Status = EnumerateDevices(DevExt);
if (!NT_SUCCESS(Status))
{
DPRINT1("Device enumeration failed (Status: 0x%x)\n", Status);
return Status;
}
KeAcquireSpinLock(&DevExt->FloppyDriveListLock, &OldIrql);
DeviceRelations = ExAllocatePool(NonPagedPool,
sizeof(DEVICE_RELATIONS) + sizeof(DeviceRelations->Objects) *
(DevExt->FloppyDriveListCount - 1));
if (!DeviceRelations)
{
DPRINT1("Failed to allocate memory for device relations\n");
KeReleaseSpinLock(&DevExt->FloppyDriveListLock, OldIrql);
return STATUS_INSUFFICIENT_RESOURCES;
}
DeviceRelations->Count = DevExt->FloppyDriveListCount;
ListEntry = DevExt->FloppyDriveList.Flink;
i = 0;
while (ListEntry != &DevExt->FloppyDriveList)
{
PdoDevExt = CONTAINING_RECORD(ListEntry, FDC_PDO_EXTENSION, ListEntry);
ObReferenceObject(PdoDevExt->Common.DeviceObject);
DeviceRelations->Objects[i++] = PdoDevExt->Common.DeviceObject;
ListEntry = ListEntry->Flink;
}
KeReleaseSpinLock(&DevExt->FloppyDriveListLock, OldIrql);
Irp->IoStatus.Information = (ULONG_PTR)DeviceRelations;
return STATUS_SUCCESS;
}
static NTSTATUS
FdcFdoStartDevice(PFDC_FDO_EXTENSION DevExt,
PIRP Irp,
PIO_STACK_LOCATION IrpSp)
{
PCM_PARTIAL_RESOURCE_LIST ResourceList;
ULONG i;
ResourceList = &IrpSp->Parameters.StartDevice.AllocatedResources->List[0].PartialResourceList;
DPRINT1("Descriptor count: %d\n", ResourceList->Count);
for (i = 0; i < ResourceList->Count; i++)
{
PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptor = &ResourceList->PartialDescriptors[i];
if (PartialDescriptor->Type == CmResourceTypeDeviceSpecific)
{
RtlCopyMemory(&DevExt->FloppyDeviceData,
(PartialDescriptor + 1),
sizeof(CM_FLOPPY_DEVICE_DATA));
}
}
return STATUS_SUCCESS;
}
NTSTATUS
FdcFdoPnpDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_FDO_EXTENSION DevExt = DeviceObject->DeviceExtension;
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS Status = Irp->IoStatus.Status;
switch (IrpSp->MinorFunction)
{
case IRP_MN_CANCEL_STOP_DEVICE:
case IRP_MN_CANCEL_REMOVE_DEVICE:
Status = STATUS_SUCCESS;
break;
case IRP_MN_START_DEVICE:
DPRINT("Starting FDC FDO\n");
Status = ForwardIrpAndWait(DeviceObject, Irp);
if (NT_SUCCESS(Status))
{
Status = FdcFdoStartDevice(DevExt, Irp, IrpSp);
}
Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
case IRP_MN_STOP_DEVICE:
DPRINT("Stopping FDC FDO\n");
/* We don't need to do anything here */
Status = STATUS_SUCCESS;
break;
case IRP_MN_QUERY_REMOVE_DEVICE:
case IRP_MN_QUERY_STOP_DEVICE:
/* We don't care */
Status = STATUS_SUCCESS;
break;
case IRP_MN_REMOVE_DEVICE:
DPRINT("Removing FDC FDO\n");
/* Undo what we did in FdcAddDevice */
IoDetachDevice(DevExt->Ldo);
IoDeleteDevice(DeviceObject);
Status = STATUS_SUCCESS;
break;
case IRP_MN_SURPRISE_REMOVAL:
/* Nothing special to do here to deal with surprise removal */
Status = STATUS_SUCCESS;
break;
case IRP_MN_QUERY_DEVICE_RELATIONS:
if (IrpSp->Parameters.QueryDeviceRelations.Type == BusRelations)
{
Status = FdcFdoQueryBusRelations(DevExt, Irp);
Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
}
break;
}
Irp->IoStatus.Status = Status;
IoSkipCurrentIrpStackLocation(Irp);
return IoCallDriver(DevExt->Ldo, Irp);
}
NTSTATUS
FdcFdoPowerDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_FDO_EXTENSION DevExt = DeviceObject->DeviceExtension;
DPRINT1("Power request not handled\n");
IoSkipCurrentIrpStackLocation(Irp);
return IoCallDriver(DevExt->Ldo, Irp);
}
NTSTATUS
FdcFdoDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
/* FIXME: We don't handle any of these yet */
DPRINT1("Device control request not handled\n");
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}
NTSTATUS
FdcFdoInternalDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
/* FIXME: We don't handle any of these yet */
DPRINT1("Internal device control request not handled\n");
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}

View file

@ -1,260 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Serial enumerator driver
* FILE: drivers/storage/fdc/fdc/pdo.c
* PURPOSE: Floppy class driver PDO functions
*
* PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
*/
#include <wdm.h>
#define INITGUID
#include <wdmguid.h>
#include "fdc.h"
#define NDEBUG
#include <debug.h>
static NTSTATUS
FdcPdoQueryId(PFDC_PDO_EXTENSION DevExt,
PIRP Irp,
PIO_STACK_LOCATION IrpSp)
{
WCHAR Buffer[100];
PWCHAR BufferP;
switch (IrpSp->Parameters.QueryId.IdType)
{
case BusQueryDeviceID:
BufferP = L"FDC\\GENERIC_FLOPPY_DRIVE";
break;
case BusQueryHardwareIDs:
BufferP = L"FDC\\GENERIC_FLOPPY_DRIVE\0";
break;
case BusQueryCompatibleIDs:
BufferP = L"GenFloppyDisk\0";
break;
case BusQueryInstanceID:
swprintf(Buffer, L"%d", DevExt->FloppyNumber);
BufferP = Buffer;
break;
default:
return STATUS_UNSUCCESSFUL;
}
Irp->IoStatus.Information = (ULONG_PTR)BufferP;
return STATUS_SUCCESS;
}
#if 0
static NTSTATUS
FdcPdoQueryBusInformation(PIRP Irp)
{
PPNP_BUS_INFORMATION BusInformation;
BusInformation = ExAllocatePool(PagedPool, sizeof(PNP_BUS_INFORMATION));
if (!BusInformation)
{
DPRINT1("Failed to allocate PnP bus info struct\n");
return STATUS_INSUFFICIENT_RESOURCES;
}
BusInformation->BusTypeGuid = GUID_BUS_TYPE_INTERNAL;
BusInformation->LegacyBusType = Internal;
BusInformation->BusNumber = 0;
Irp->IoStatus.Information = (ULONG_PTR)BusInformation;
return STATUS_SUCCESS;
}
#endif
static NTSTATUS
FdcPdoQueryCapabilities(PFDC_PDO_EXTENSION DevExt,
PIO_STACK_LOCATION IrpSp)
{
PDEVICE_CAPABILITIES DevCaps = IrpSp->Parameters.DeviceCapabilities.Capabilities;
DevCaps->DeviceD1 = 0;
DevCaps->DeviceD2 = 0;
DevCaps->LockSupported = 0;
DevCaps->EjectSupported = 0;
DevCaps->Removable = 0;
DevCaps->DockDevice = 0;
DevCaps->UniqueID = 0;
DevCaps->SilentInstall = 0;
DevCaps->RawDeviceOK = 0;
DevCaps->SurpriseRemovalOK = 0;
DevCaps->WakeFromD0 = 0;
DevCaps->WakeFromD1 = 0;
DevCaps->WakeFromD2 = 0;
DevCaps->WakeFromD3 = 0;
DevCaps->HardwareDisabled = 0;
DevCaps->NoDisplayInUI = 0;
DevCaps->Address = DevExt->FloppyNumber;
DevCaps->SystemWake = PowerSystemUnspecified;
DevCaps->DeviceWake = PowerDeviceUnspecified;
DevCaps->D1Latency = 0;
DevCaps->D2Latency = 0;
DevCaps->D3Latency = 0;
return STATUS_SUCCESS;
}
static NTSTATUS
FdcPdoQueryTargetDeviceRelations(PFDC_PDO_EXTENSION DevExt,
PIRP Irp)
{
PDEVICE_RELATIONS DeviceRelations;
DeviceRelations = ExAllocatePool(NonPagedPool,
sizeof(DEVICE_RELATIONS));
if (!DeviceRelations)
{
DPRINT1("Failed to allocate memory for device relations\n");
return STATUS_INSUFFICIENT_RESOURCES;
}
DeviceRelations->Count = 1;
DeviceRelations->Objects[0] = DevExt->Common.DeviceObject;
Irp->IoStatus.Information = (ULONG_PTR)DeviceRelations;
return STATUS_SUCCESS;
}
static VOID
FdcPdoRemoveDevice(PFDC_PDO_EXTENSION DevExt)
{
KIRQL OldIrql;
KeAcquireSpinLock(&DevExt->FdoDevExt->FloppyDriveListLock, &OldIrql);
RemoveEntryList(&DevExt->ListEntry);
KeReleaseSpinLock(&DevExt->FdoDevExt->FloppyDriveListLock, OldIrql);
IoDeleteDevice(DevExt->Common.DeviceObject);
}
NTSTATUS
FdcPdoPnpDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PFDC_PDO_EXTENSION DevExt = DeviceObject->DeviceExtension;
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS Status = Irp->IoStatus.Status;
PWCHAR Buffer;
switch (IrpSp->MinorFunction)
{
case IRP_MN_CANCEL_STOP_DEVICE:
case IRP_MN_CANCEL_REMOVE_DEVICE:
Status = STATUS_SUCCESS;
break;
case IRP_MN_START_DEVICE:
DPRINT("Starting FDC PDO\n");
Status = STATUS_SUCCESS;
break;
case IRP_MN_STOP_DEVICE:
DPRINT("Stopping FDC PDO\n");
/* We don't need to do anything here */
Status = STATUS_SUCCESS;
break;
case IRP_MN_QUERY_REMOVE_DEVICE:
case IRP_MN_QUERY_STOP_DEVICE:
/* We don't care */
Status = STATUS_SUCCESS;
break;
case IRP_MN_REMOVE_DEVICE:
DPRINT("Removing FDC PDO\n");
FdcPdoRemoveDevice(DevExt);
Status = STATUS_SUCCESS;
break;
case IRP_MN_SURPRISE_REMOVAL:
/* Nothing special to do here to deal with surprise removal */
Status = STATUS_SUCCESS;
break;
case IRP_MN_QUERY_DEVICE_TEXT:
Buffer = L"Floppy disk drive";
Irp->IoStatus.Information = (ULONG_PTR)Buffer;
Status = STATUS_SUCCESS;
break;
case IRP_MN_QUERY_ID:
Status = FdcPdoQueryId(DevExt, Irp, IrpSp);
break;
case IRP_MN_QUERY_CAPABILITIES:
Status = FdcPdoQueryCapabilities(DevExt, IrpSp);
break;
case IRP_MN_QUERY_DEVICE_RELATIONS:
if (IrpSp->Parameters.QueryDeviceRelations.Type == TargetDeviceRelation)
{
Status = FdcPdoQueryTargetDeviceRelations(DevExt, Irp);
}
break;
#if 0
case IRP_MN_QUERY_BUS_INFORMATION:
Status = FdcPdoQueryBusInformation(Irp);
break;
#endif
case IRP_MN_QUERY_RESOURCES:
case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
/* All resources are owned by the controller's FDO */
break;
default:
break;
}
Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
}
NTSTATUS
FdcPdoPowerDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
DPRINT1("Power request not handled\n");
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}
NTSTATUS
FdcPdoDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNREFERENCED_PARAMETER(DeviceObject);
/* FIXME: We don't handle any of these yet */
DPRINT1("Device control request not handled\n");
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}
NTSTATUS
FdcPdoInternalDeviceControlDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNREFERENCED_PARAMETER(DeviceObject);
/* FIXME: We don't handle any of these yet */
DPRINT1("Internal device control request not handled\n");
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}