windows-nt/Source/XPSP1/NT/drivers/wdm/usb/driver/isoperf/ioctl.h
2020-09-26 16:20:57 +08:00

119 lines
3.8 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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