|
|
extern ULONG gulBytesAllocated; extern ULONG gulBytesFreed;
#define GET_PENTIUM_CLOCK_COUNT(u,l)\
{ \ _asm push eax \ _asm push ebx \ _asm _emit 0x0f \ _asm _emit 0x31 \ _asm mov l,eax \ _asm mov u,edx \ _asm pop ebx \ _asm pop eax \ }
#define FIRE_OFF_CATC outp (0x378, 00)
#define RESTART_CATC outp (0x378, 0xFF)
// My own Assert where I don't want to continue if I hit this error condition
// DON'T append a semicolon to this.
#define ISO_ASSERT( exp ) \
if (!(exp)) { \ RtlAssert( #exp, __FILE__, __LINE__, NULL ); \ return (0); \ }
#define PIPEINFO_FROM_DEVOBJ(D,I,P) (&(D->Interface[I]->Pipes[P]));
typedef struct __IsoTransferContext__ { PURB urb; PDEVICE_OBJECT DeviceObject; PUSBD_PIPE_INFORMATION PipeInfo; PIRP irp; PVOID pvBuffer; ULONG ulBufferLen; ULONG NumPackets; ULONG PipeNumber; ULONG ulLastData; BOOLEAN bFirstUrb; KTIMER Timer; KDPC Dpc; }IsoTxferContext, *PIsoTxterContext;
NTSTATUS ISOPERF_StartIsoTest ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS ISOPERF_RefreshIsoUrb( PURB urb, USHORT packetSize, USBD_PIPE_HANDLE pipeHandle, PVOID pvDataBuffer, ULONG ulDataBufferLen );
NTSTATUS ISOPERF_IsoInCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context );
PURB ISOPERF_BuildIsoRequest( IN PDEVICE_OBJECT DeviceObject, IN PUSBD_PIPE_INFORMATION pPipeDesc, IN BOOLEAN Read, IN ULONG length, IN ULONG ulFrameNumber, IN PVOID pvTransferBuffer, IN PMDL pMDL );
ULONG ISOPERF_StartIsoInTest ( PDEVICE_OBJECT DeviceObject, PIRP pIrp );
PVOID ISOPERF_GetBuff ( PDEVICE_OBJECT DeviceObject, ULONG ulPipeNumber, ULONG ulInterfaceNumber, ULONG ulNumberOfFrames, PULONG pulBufferSize );
NTSTATUS ISOPERF_ResetPipe( IN PDEVICE_OBJECT DeviceObject, IN USBD_PIPE_INFORMATION * pPipeInfo ); ULONG ISOPERF_GetCurrentFrame( IN PDEVICE_OBJECT DeviceObject ); NTSTATUS ISOPERF_StopIsoInTest ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
BOOLEAN ISOPERF_IsDataGood(PIsoTxterContext pIsoContext);
NTSTATUS ISOPERF_GetStats ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN OUT pConfig_Stat_Info pStatInfo, IN ULONG ulBufferLen );
NTSTATUS ISOPERF_SetDriverConfig ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN OUT pConfig_Stat_Info pConfInfoIn, IN ULONG ulBufferLen );
NTSTATUS ISOPERF_FindMateDevice ( PDEVICE_OBJECT DeviceObject );
VOID ISOPERF_StartIsoOutTest ( IN PISOPERF_WORKITEM IsoperfWorkItem );
NTSTATUS ISOPERF_IsoOutCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context );
NTSTATUS ISOPERF_TimeStampUrb ( PVOID urb, PULONG pulLower, PULONG pulUpper );
NTSTATUS ISOPERF_GetUrbTimeStamp ( PVOID urb, PULONG pulLower, PULONG pulUpper );
|