/*++ 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 // // 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 #endif // IDEXCHAN