xbox-kernel/private/ntos/inc/idexchan.h
2020-09-30 17:17:25 +02:00

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