You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.1 KiB
113 lines
2.1 KiB
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
isostrm.h
|
|
|
|
Abstract:
|
|
|
|
Environment:
|
|
|
|
Kernel mode
|
|
|
|
Notes:
|
|
|
|
Copyright (c) 2000 Microsoft Corporation.
|
|
All Rights Reserved.
|
|
|
|
--*/
|
|
|
|
#ifndef _ISOUSB_STRM_H
|
|
#define _ISOUSB_STRM_H
|
|
|
|
#define ISOUSB_MAX_IRP 2
|
|
#define ISOCH_IN_PIPE_INDEX 4
|
|
#define ISOCH_OUT_PIPE_INDEX 5
|
|
|
|
typedef struct _ISOUSB_STREAM_OBJECT {
|
|
|
|
// number of pending irps for this stream
|
|
ULONG PendingIrps;
|
|
|
|
// event signaled when no irps pending
|
|
KEVENT NoPendingIrpEvent;
|
|
|
|
PDEVICE_OBJECT DeviceObject;
|
|
|
|
PUSBD_PIPE_INFORMATION PipeInformation;
|
|
|
|
struct _ISOUSB_TRANSFER_OBJECT *TransferObjectList[ISOUSB_MAX_IRP];
|
|
|
|
} ISOUSB_STREAM_OBJECT, *PISOUSB_STREAM_OBJECT;
|
|
|
|
typedef struct _ISOUSB_TRANSFER_OBJECT {
|
|
|
|
PIRP Irp;
|
|
|
|
PURB Urb;
|
|
|
|
PUCHAR DataBuffer;
|
|
|
|
//
|
|
// statistics.
|
|
//
|
|
ULONG TimesRecycled;
|
|
|
|
ULONG TotalPacketsProcessed;
|
|
|
|
ULONG TotalBytesProcessed;
|
|
|
|
ULONG ErrorPacketCount;
|
|
|
|
PISOUSB_STREAM_OBJECT StreamObject;
|
|
|
|
} ISOUSB_TRANSFER_OBJECT, *PISOUSB_TRANSFER_OBJECT;
|
|
|
|
|
|
NTSTATUS
|
|
IsoUsb_StartIsoStream(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_StartTransfer(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PISOUSB_STREAM_OBJECT StreamObject,
|
|
IN ULONG Index
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_InitializeStreamUrb(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PISOUSB_TRANSFER_OBJECT TransferObject
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_IsoIrp_Complete(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_ProcessTransfer(
|
|
IN PISOUSB_TRANSFER_OBJECT TransferObject
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_StopIsoStream(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PISOUSB_STREAM_OBJECT StreamObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
IsoUsb_StreamObjectCleanup(
|
|
IN PISOUSB_STREAM_OBJECT StreamObject,
|
|
IN PDEVICE_EXTENSION DeviceExtension
|
|
);
|
|
|
|
#endif
|