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__
|
|||
|
|