|
|
/*++
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__
|