reactos/drivers/storage/port/storport/precomp.h
2017-10-12 23:14:08 +02:00

118 lines
2 KiB
C

/*
* PROJECT: ReactOS Storport Driver
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: Storport driver common header file
* COPYRIGHT: Copyright 2017 Eric Kohl (eric.kohl@reactos.org)
*/
#ifndef _STORPORT_PCH_
#define _STORPORT_PCH_
#include <wdm.h>
#include <ntddk.h>
#include <stdio.h>
/* Declare STORPORT_API functions as exports rather than imports */
#define _STORPORT_
#include <storport.h>
#include <ntddscsi.h>
#include <ntdddisk.h>
#include <mountdev.h>
typedef enum
{
dsStopped,
dsStarted,
dsPaused,
dsRemoved,
dsSurpriseRemoved
} DEVICE_STATE;
typedef enum
{
InvalidExtension = 0,
DriverExtension,
FdoExtension,
PdoExtension
} EXTENSION_TYPE;
typedef struct _DRIVER_OBJECT_EXTENSION
{
EXTENSION_TYPE ExtensionType;
PDRIVER_OBJECT DriverObject;
KSPIN_LOCK AdapterListLock;
LIST_ENTRY AdapterListHead;
ULONG AdapterCount;
} DRIVER_OBJECT_EXTENSION, *PDRIVER_OBJECT_EXTENSION;
typedef struct _FDO_DEVICE_EXTENSION
{
EXTENSION_TYPE ExtensionType;
PDEVICE_OBJECT Device;
PDEVICE_OBJECT LowerDevice;
PDEVICE_OBJECT PhysicalDevice;
DEVICE_STATE PnpState;
LIST_ENTRY AdapterListEntry;
} FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
typedef struct _PDO_DEVICE_EXTENSION
{
EXTENSION_TYPE ExtensionType;
PDEVICE_OBJECT AttachedFdo;
DEVICE_STATE PnpState;
} PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
/* fdo.c */
NTSTATUS
NTAPI
PortFdoPnp(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp);
/* misc.c */
NTSTATUS
ForwardIrpAndWait(
_In_ PDEVICE_OBJECT LowerDevice,
_In_ PIRP Irp);
NTSTATUS
NTAPI
ForwardIrpAndForget(
_In_ PDEVICE_OBJECT LowerDevice,
_In_ PIRP Irp);
/* pdo.c */
NTSTATUS
NTAPI
PortPdoPnp(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp);
/* storport.c */
NTSTATUS
NTAPI
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath);
#endif /* _STORPORT_PCH_ */