isostrm.h
上传用户:leituo004
上传日期:2014-11-03
资源大小:159k
文件大小:2k
源码类别:

驱动编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 2000  Microsoft Corporation
  3. Module Name:
  4.     isostrm.h
  5. Abstract:
  6. Environment:
  7.     Kernel mode
  8. Notes:
  9.     Copyright (c) 2000 Microsoft Corporation.  
  10.     All Rights Reserved.
  11. --*/
  12. #ifndef _ISOUSB_STRM_H
  13. #define _ISOUSB_STRM_H
  14. #define ISOUSB_MAX_IRP                  2
  15. #define ISOCH_IN_PIPE_INDEX             4
  16. #define ISOCH_OUT_PIPE_INDEX            5
  17. typedef struct _ISOUSB_STREAM_OBJECT {
  18.     // number of pending irps for this stream
  19.     ULONG PendingIrps;
  20.     // event signaled when no irps pending
  21.     KEVENT NoPendingIrpEvent;
  22.     
  23.     PDEVICE_OBJECT DeviceObject;
  24.     PUSBD_PIPE_INFORMATION PipeInformation;
  25.     struct _ISOUSB_TRANSFER_OBJECT *TransferObjectList[ISOUSB_MAX_IRP];
  26. } ISOUSB_STREAM_OBJECT, *PISOUSB_STREAM_OBJECT;
  27. typedef struct _ISOUSB_TRANSFER_OBJECT {
  28.     PIRP Irp;
  29.     PURB Urb;
  30.     PUCHAR DataBuffer;
  31.     //
  32.     // statistics.
  33.     //
  34.     ULONG TimesRecycled;
  35.     ULONG TotalPacketsProcessed;
  36.     ULONG TotalBytesProcessed;
  37.     ULONG ErrorPacketCount;
  38.     PISOUSB_STREAM_OBJECT StreamObject;
  39. } ISOUSB_TRANSFER_OBJECT, *PISOUSB_TRANSFER_OBJECT;
  40. NTSTATUS
  41. IsoUsb_StartIsoStream(
  42.     IN PDEVICE_OBJECT DeviceObject,
  43.     IN PIRP           Irp
  44.     );
  45. NTSTATUS
  46. IsoUsb_StartTransfer(
  47.     IN PDEVICE_OBJECT        DeviceObject,
  48.     IN PISOUSB_STREAM_OBJECT StreamObject,
  49.     IN ULONG                 Index
  50.     );
  51. NTSTATUS
  52. IsoUsb_InitializeStreamUrb(
  53.     IN PDEVICE_OBJECT          DeviceObject,
  54.     IN PISOUSB_TRANSFER_OBJECT TransferObject
  55.     );
  56. NTSTATUS
  57. IsoUsb_IsoIrp_Complete(
  58.     IN PDEVICE_OBJECT DeviceObject,
  59.     IN PIRP           Irp,
  60.     IN PVOID          Context
  61.     );
  62. NTSTATUS
  63. IsoUsb_ProcessTransfer(
  64.     IN PISOUSB_TRANSFER_OBJECT TransferObject
  65.     );
  66. NTSTATUS
  67. IsoUsb_StopIsoStream(
  68.     IN PDEVICE_OBJECT        DeviceObject,
  69.     IN PISOUSB_STREAM_OBJECT StreamObject,
  70.     IN PIRP                  Irp
  71.     );
  72. NTSTATUS
  73. IsoUsb_StreamObjectCleanup(
  74.     IN PISOUSB_STREAM_OBJECT StreamObject,
  75.     IN PDEVICE_EXTENSION     DeviceExtension
  76.     );
  77. #endif