131 lines
2.3 KiB
C
131 lines
2.3 KiB
C
/*++
|
|
|
|
Copyright (c) 2000-2002 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
idexchan.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the public definition of the IDEX channel object.
|
|
|
|
--*/
|
|
|
|
#ifndef _IDEXCHAN_
|
|
#define _IDEXCHAN_
|
|
|
|
#include <pshpack4.h>
|
|
|
|
//
|
|
// Function prototype for interrupt service routines.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_INTERRUPT_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Function prototype for channel post interrupt or timeout DPC routines.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_FINISHIO_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Function prototype for routines to poll if a device reset has completed.
|
|
//
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PIDE_POLL_RESET_COMPLETE_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Function prototype for timeout expired routines.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_TIMEOUT_EXPIRED_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Function prototype for reset device routines.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_RESET_DEVICE_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Function prototype for starting or queueing the supplied I/O request packet.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_START_PACKET_ROUTINE)(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
//
|
|
// Function prototype for starting the next queued I/O request packet.
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(*PIDE_START_NEXT_PACKET_ROUTINE)(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Channel object.
|
|
//
|
|
|
|
typedef struct _IDE_CHANNEL_OBJECT {
|
|
PIDE_INTERRUPT_ROUTINE InterruptRoutine;
|
|
PIDE_FINISHIO_ROUTINE FinishIoRoutine;
|
|
PIDE_POLL_RESET_COMPLETE_ROUTINE PollResetCompleteRoutine;
|
|
PIDE_TIMEOUT_EXPIRED_ROUTINE TimeoutExpiredRoutine;
|
|
PIDE_START_PACKET_ROUTINE StartPacketRoutine;
|
|
PIDE_START_NEXT_PACKET_ROUTINE StartNextPacketRoutine;
|
|
KIRQL InterruptIrql;
|
|
BOOLEAN ExpectingBusMasterInterrupt;
|
|
BOOLEAN StartPacketBusy;
|
|
BOOLEAN StartPacketRequested;
|
|
UCHAR Timeout;
|
|
UCHAR IoRetries;
|
|
UCHAR MaximumIoRetries;
|
|
PIRP CurrentIrp;
|
|
KDEVICE_QUEUE DeviceQueue;
|
|
ULONG PhysicalRegionDescriptorTablePhysical;
|
|
KDPC TimerDpc;
|
|
KDPC FinishDpc;
|
|
KTIMER Timer;
|
|
KINTERRUPT InterruptObject;
|
|
} IDE_CHANNEL_OBJECT, *PIDE_CHANNEL_OBJECT;
|
|
|
|
//
|
|
// External symbols.
|
|
//
|
|
|
|
#if !defined(_NTSYSTEM_)
|
|
extern IDE_CHANNEL_OBJECT *IdexChannelObject;
|
|
#else
|
|
extern IDE_CHANNEL_OBJECT IdexChannelObject;
|
|
#endif
|
|
|
|
#include <poppack.h>
|
|
|
|
#endif // IDEXCHAN
|