Go to the documentation of this file.00001 #include <ntifs.h>
00002 #include <ntddk.h>
00003 #include <ide.h>
00004 #include <wdmguid.h>
00005 #include <stdio.h>
00006
00007 typedef struct _PCIIDEX_DRIVER_EXTENSION
00008 {
00009 PCONTROLLER_PROPERTIES HwGetControllerProperties;
00010 ULONG MiniControllerExtensionSize;
00011 PCIIDE_UDMA_MODES_SUPPORTED HwUdmaModesSupported;
00012 } PCIIDEX_DRIVER_EXTENSION, *PPCIIDEX_DRIVER_EXTENSION;
00013
00014 typedef struct _COMMON_DEVICE_EXTENSION
00015 {
00016 BOOLEAN IsFDO;
00017 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
00018
00019 typedef struct _FDO_DEVICE_EXTENSION
00020 {
00021 COMMON_DEVICE_EXTENSION Common;
00022
00023 PBUS_INTERFACE_STANDARD BusInterface;
00024 IDE_CONTROLLER_PROPERTIES Properties;
00025 PHYSICAL_ADDRESS BusMasterPortBase;
00026 PDEVICE_OBJECT LowerDevice;
00027 PDEVICE_OBJECT Pdo[MAX_IDE_CHANNEL];
00028 USHORT VendorId;
00029 USHORT DeviceId;
00030 PUCHAR MiniControllerExtension[0];
00031 } FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
00032
00033 typedef struct _PDO_DEVICE_EXTENSION
00034 {
00035 COMMON_DEVICE_EXTENSION Common;
00036
00037 ULONG Channel;
00038 PDEVICE_OBJECT ControllerFdo;
00039 } PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
00040
00041
00042
00043 DRIVER_ADD_DEVICE PciIdeXAddDevice;
00044 NTSTATUS NTAPI
00045 PciIdeXAddDevice(
00046 IN PDRIVER_OBJECT DriverObject,
00047 IN PDEVICE_OBJECT Pdo);
00048
00049 NTSTATUS NTAPI
00050 PciIdeXFdoPnpDispatch(
00051 IN PDEVICE_OBJECT DeviceObject,
00052 IN PIRP Irp);
00053
00054
00055
00056 IO_COMPLETION_ROUTINE PciIdeXGenericCompletion;
00057 NTSTATUS NTAPI
00058 PciIdeXGenericCompletion(
00059 IN PDEVICE_OBJECT DeviceObject,
00060 IN PIRP Irp,
00061 IN PVOID Context);
00062
00063 NTSTATUS
00064 ForwardIrpAndWait(
00065 IN PDEVICE_OBJECT DeviceObject,
00066 IN PIRP Irp);
00067
00068 NTSTATUS NTAPI
00069 ForwardIrpAndForget(
00070 IN PDEVICE_OBJECT DeviceObject,
00071 IN PIRP Irp);
00072
00073 NTSTATUS
00074 DuplicateUnicodeString(
00075 IN ULONG Flags,
00076 IN PCUNICODE_STRING SourceString,
00077 OUT PUNICODE_STRING DestinationString);
00078
00079
00080
00081 NTSTATUS NTAPI
00082 PciIdeXPdoPnpDispatch(
00083 IN PDEVICE_OBJECT DeviceObject,
00084 IN PIRP Irp);