119 lines
3.8 KiB
C
119 lines
3.8 KiB
C
/*++
|
||
|
||
Copyright (c) 1996 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
ioctl.h
|
||
|
||
Abstract:
|
||
|
||
|
||
|
||
Environment:
|
||
|
||
Kernel & user mode
|
||
|
||
Revision History:
|
||
|
||
5-10-96 : created
|
||
|
||
--*/
|
||
|
||
#ifndef __IOCTL_H__
|
||
#define __IOCTL_H__
|
||
|
||
#define GET_ERROR_DEADMAN_TIMEOUT 10000 //timeout in mS
|
||
|
||
#define ISOPERF_IOCTL_INDEX 0x0000
|
||
|
||
|
||
#define IOCTL_ISOPERF_START_ISO_IN_TEST CTL_CODE(FILE_DEVICE_UNKNOWN, \
|
||
ISOPERF_IOCTL_INDEX,\
|
||
METHOD_BUFFERED, \
|
||
FILE_ANY_ACCESS)
|
||
|
||
#define IOCTL_ISOPERF_STOP_ISO_IN_TEST CTL_CODE(FILE_DEVICE_UNKNOWN, \
|
||
ISOPERF_IOCTL_INDEX+1,\
|
||
METHOD_BUFFERED, \
|
||
FILE_ANY_ACCESS)
|
||
|
||
#define IOCTL_ISOPERF_GET_ISO_IN_STATS CTL_CODE(FILE_DEVICE_UNKNOWN, \
|
||
ISOPERF_IOCTL_INDEX+2,\
|
||
METHOD_BUFFERED, \
|
||
FILE_ANY_ACCESS)
|
||
|
||
#define IOCTL_ISOPERF_WAIT_FOR_ERROR CTL_CODE(FILE_DEVICE_UNKNOWN, \
|
||
ISOPERF_IOCTL_INDEX+3,\
|
||
METHOD_BUFFERED, \
|
||
FILE_ANY_ACCESS)
|
||
|
||
#define IOCTL_ISOPERF_SET_DRIVER_CONFIG CTL_CODE(FILE_DEVICE_UNKNOWN, \
|
||
ISOPERF_IOCTL_INDEX+4,\
|
||
METHOD_BUFFERED, \
|
||
FILE_ANY_ACCESS)
|
||
|
||
/*
|
||
// Test device types
|
||
*/
|
||
typedef enum _device_type {
|
||
Iso_In_With_Pattern,
|
||
Iso_Out_With_Interrupt_Feedback,
|
||
Iso_Out_Without_Feedback,
|
||
Unknown_Device_Type,
|
||
Max_Device_Type
|
||
} dtDeviceType, *pdtDeviceType;
|
||
|
||
typedef enum _erErrorType_ {
|
||
NoError,
|
||
DataCompareFailed,
|
||
UsbdErrorInCompletion,
|
||
ErrorInPostingUrb,
|
||
Max_Error_Type
|
||
}erErrorType, *perErrorType;
|
||
|
||
typedef struct _config_and_stat_info_ {
|
||
// Config Info (read at start of tests)
|
||
ULONG ulNumberOfFrames;
|
||
ULONG ulMax_Urbs_Per_Pipe;
|
||
ULONG ulDoInOutTest;
|
||
ULONG ulFrameOffset; // 0 => start ASAP
|
||
ULONG ulFrameOffsetMate; // For the mate device (Iso OUT)
|
||
|
||
// Info on frame numbers for Iso test app to look at
|
||
ULONG ulStartingFrameNumber; //Frame number we started our transfers on...
|
||
ULONG ulFrameNumberAtStart; //Frame number that the bus was on when we posted the Irp...
|
||
|
||
//Stat counters
|
||
ULONG ulSuccessfulIrps;
|
||
ULONG ulUnSuccessfulIrps;
|
||
ULONG ulBytesTransferredIn;
|
||
ULONG ulBytesTransferredOut;
|
||
ULONG ulUpperClockCount;
|
||
ULONG ulLowerClockCount;
|
||
ULONG ulUrbDeltaClockCount;
|
||
|
||
// Misc info about this device
|
||
ULONG ulCountDownToStop;
|
||
USHORT ulMaxPacketSize_IN;
|
||
USHORT Padding1;
|
||
USHORT ulMaxPacketSize_OUT;
|
||
USHORT Padding2;
|
||
dtDeviceType DeviceType;
|
||
|
||
//these are kept globally for now...but are copied into this structure when passed to user mode app
|
||
ULONG ulBytesAllocated;
|
||
ULONG ulBytesFreed;
|
||
|
||
// Error indicators
|
||
erErrorType erError; //Error type -- indicates device hit an error (0=no error)
|
||
ULONG bStopped; //Stopped flag -- indicates device is stopped due to an error
|
||
ULONG UrbStatusCode; //If error flag indicates UsbdError or ErrorInPostingUrb, this is the last usbd URB status code
|
||
ULONG UsbdPacketStatCode; //If error flag indicates UsbdError or ErrorInPostingUrb, this is the last usbd PACKET status code
|
||
ULONG bDeviceRunning; //Data transfers are happening on this device
|
||
|
||
} Config_Stat_Info, * pConfig_Stat_Info ;
|
||
|
||
#endif // __IOCTL_H__
|
||
|