⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbcamdi.h

📁 MinGW+MSYS开发必用的api参考
💻 H
字号:
/* * usbcamdi.h * * USB Camera driver interface. * * This file is part of the w32api package. * * Contributors: *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __USBCAMDI_H#define __USBCAMDI_H#if __GNUC__ >=3#pragma GCC system_header#endif#if !defined(__USB_H) && !defined(__USBDI_H)#error include usb.h or usbdi.h before usbcamdi.h#else#ifdef __cplusplusextern "C" {#endif#pragma pack(push,4)#include "ntddk.h"#if defined(_BATTERYCLASS_)  #define USBCAMAPI DECLSPEC_EXPORT#else  #define USBCAMAPI DECLSPEC_IMPORT#endif/* FIXME: Unknown definition */typedef PVOID PHW_STREAM_REQUEST_BLOCK;DEFINE_GUID(GUID_USBCAMD_INTERFACE,  0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5);#define USBCAMD_PROCESSPACKETEX_DropFrame             0x0002 #define USBCAMD_PROCESSPACKETEX_NextFrameIsStill      0x0004 #define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill   0x0008 #define USBCAMD_DATA_PIPE                 0x0001#define USBCAMD_MULTIPLEX_PIPE            0x0002#define USBCAMD_SYNC_PIPE                 0x0004#define USBCAMD_DONT_CARE_PIPE            0x0008#define USBCAMD_VIDEO_STREAM              0x1#define USBCAMD_STILL_STREAM              0x2#define USBCAMD_VIDEO_STILL_STREAM        (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)#define USBCAMD_STOP_STREAM               0x00000001#define USBCAMD_START_STREAM              0x00000000typedef struct _pipe_config_descriptor {  CHAR  StreamAssociation;  UCHAR  PipeConfigFlags;} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor;typedef enum {	USBCAMD_CamControlFlag_NoVideoRawProcessing = 1,	USBCAMD_CamControlFlag_NoStillRawProcessing = 2,	USBCAMD_CamControlFlag_AssociatedFormat = 4,	USBCAMD_CamControlFlag_EnableDeviceEvents = 8} USBCAMD_CamControlFlags;typedef NTSTATUS DDKAPI(*PCAM_ALLOCATE_BW_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PULONG  RawFrameLength,  PVOID  Format);typedef NTSTATUS DDKAPI(*PCAM_ALLOCATE_BW_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PULONG  RawFrameLength,  PVOID  Format,  ULONG  StreamNumber);typedef NTSTATUS DDKAPI(*PCAM_CONFIGURE_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PUSBD_INTERFACE_INFORMATION  Interface,  PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor,  PLONG  DataPipeIndex,  PLONG  SyncPipeIndex);typedef NTSTATUS DDKAPI(*PCAM_CONFIGURE_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PUSBD_INTERFACE_INFORMATION  Interface,  PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor,  ULONG  PipeConfigListSize,  PUSBCAMD_Pipe_Config_Descriptor  PipeConfig,  PUSB_DEVICE_DESCRIPTOR  DeviceDescriptor);typedef NTSTATUS DDKAPI(*PCAM_FREE_BW_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext);typedef NTSTATUS DDKAPI(*PCAM_FREE_BW_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  ULONG  StreamNumber);typedef NTSTATUS DDKAPI(*PCAM_INITIALIZE_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext);typedef VOID DDKAPI(*PCAM_NEW_FRAME_ROUTINE)(  PVOID  DeviceContext,  PVOID  FrameContext); typedef VOID DDKAPI(*PCAM_NEW_FRAME_ROUTINE_EX)(  PVOID  DeviceContext,  PVOID  FrameContext,  ULONG  StreamNumber,  PULONG  FrameLength);typedef NTSTATUS DDKAPI(*PCAM_PROCESS_RAW_FRAME_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PVOID  FrameContext,  PVOID  FrameBuffer,  ULONG  FrameLength,  PVOID  RawFrameBuffer,  ULONG  RawFrameLength,  ULONG  NumberOfPackets,  PULONG  BytesReturned);typedef NTSTATUS DDKAPI(*PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PVOID  FrameContext,  PVOID  FrameBuffer,  ULONG  FrameLength,  PVOID  RawFrameBuffer,  ULONG  RawFrameLength,  ULONG  NumberOfPackets,  PULONG  BytesReturned,  ULONG  ActualRawFrameLength,  ULONG  StreamNumber);typedef ULONG DDKAPI(*PCAM_PROCESS_PACKET_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PVOID  CurrentFrameContext,  PUSBD_ISO_PACKET_DESCRIPTOR  SyncPacket,  PVOID  SyncBuffer,  PUSBD_ISO_PACKET_DESCRIPTOR  DataPacket,  PVOID  DataBuffer,  PBOOLEAN  FrameComplete,  PBOOLEAN  NextFrameIsStill); typedef ULONG DDKAPI(*PCAM_PROCESS_PACKET_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  PVOID  CurrentFrameContext,  PUSBD_ISO_PACKET_DESCRIPTOR  SyncPacket,  PVOID  SyncBuffer,  PUSBD_ISO_PACKET_DESCRIPTOR  DataPacket,  PVOID  DataBuffer,  PBOOLEAN  FrameComplete,  PULONG  PacketFlag,  PULONG  ValidDataOffset);typedef NTSTATUS DDKAPI(*PCAM_STATE_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext);typedef NTSTATUS DDKAPI(*PCAM_START_CAPTURE_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext);typedef NTSTATUS DDKAPI(*PCAM_START_CAPTURE_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  ULONG  StreamNumber);typedef NTSTATUS DDKAPI(*PCAM_STOP_CAPTURE_ROUTINE)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext);typedef NTSTATUS DDKAPI(*PCAM_STOP_CAPTURE_ROUTINE_EX)(  PDEVICE_OBJECT  BusDeviceObject,  PVOID  DeviceContext,  ULONG  StreamNumber);typedef struct _USBCAMD_DEVICE_DATA {	ULONG  Sig;	PCAM_INITIALIZE_ROUTINE  CamInitialize;	PCAM_INITIALIZE_ROUTINE  CamUnInitialize;	PCAM_PROCESS_PACKET_ROUTINE  CamProcessUSBPacket;	PCAM_NEW_FRAME_ROUTINE  CamNewVideoFrame;	PCAM_PROCESS_RAW_FRAME_ROUTINE  CamProcessRawVideoFrame;	PCAM_START_CAPTURE_ROUTINE  CamStartCapture;	PCAM_STOP_CAPTURE_ROUTINE  CamStopCapture;	PCAM_CONFIGURE_ROUTINE  CamConfigure;	PCAM_STATE_ROUTINE  CamSaveState;	PCAM_STATE_ROUTINE  CamRestoreState;	PCAM_ALLOCATE_BW_ROUTINE  CamAllocateBandwidth;	PCAM_FREE_BW_ROUTINE  CamFreeBandwidth;} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA;typedef struct _USBCAMD_DEVICE_DATA2 {	ULONG  Sig;	PCAM_INITIALIZE_ROUTINE  CamInitialize;	PCAM_INITIALIZE_ROUTINE  CamUnInitialize;	PCAM_PROCESS_PACKET_ROUTINE_EX  CamProcessUSBPacketEx;	PCAM_NEW_FRAME_ROUTINE_EX  CamNewVideoFrameEx;	PCAM_PROCESS_RAW_FRAME_ROUTINE_EX  CamProcessRawVideoFrameEx;	PCAM_START_CAPTURE_ROUTINE_EX  CamStartCaptureEx;	PCAM_STOP_CAPTURE_ROUTINE_EX  CamStopCaptureEx;	PCAM_CONFIGURE_ROUTINE_EX  CamConfigureEx;	PCAM_STATE_ROUTINE  CamSaveState;	PCAM_STATE_ROUTINE  CamRestoreState;	PCAM_ALLOCATE_BW_ROUTINE_EX  CamAllocateBandwidthEx;	PCAM_FREE_BW_ROUTINE_EX  CamFreeBandwidthEx;} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2;USBCAMAPIULONGDDKAPIUSBCAMD_InitializeNewInterface(  /*IN*/ PVOID  DeviceContext,  /*IN*/ PVOID  DeviceData,  /*IN*/ ULONG  Version,  /*IN*/ ULONG  CamControlFlag);typedef VOID DDKAPI(*PCOMMAND_COMPLETE_FUNCTION)(  PVOID  DeviceContext,  PVOID  CommandContext,  NTSTATUS  NtStatus);typedef NTSTATUS DDKAPI(*PFNUSBCAMD_BulkReadWrite)(  /*IN*/ PVOID  DeviceContext,  /*IN*/ USHORT  PipeIndex,  /*IN*/ PVOID  Buffer,  /*IN*/ ULONG  BufferLength,  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  CommandComplete,  /*IN*/ PVOID  CommandContext);typedef NTSTATUS DDKAPI(*PFNUSBCAMD_SetIsoPipeState)(  /*IN*/ PVOID  DeviceContext,  /*IN*/ ULONG  PipeStateFlags);typedef NTSTATUS DDKAPI(*PFNUSBCAMD_CancelBulkReadWrite)(  /*IN*/ PVOID  DeviceContext,  /*IN*/ ULONG  PipeIndex);typedef NTSTATUS DDKAPI(*PFNUSBCAMD_SetVideoFormat)(   /*IN*/ PVOID  DeviceContext,  /*IN*/ PHW_STREAM_REQUEST_BLOCK  pSrb);typedef NTSTATUS DDKAPI(*PFNUSBCAMD_WaitOnDeviceEvent)(  /*IN*/ PVOID  DeviceContext,  /*IN*/ ULONG  PipeIndex,  /*IN*/ PVOID  Buffer,  /*IN*/ ULONG  BufferLength,  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  EventComplete,  /*IN*/ PVOID  EventContext,  /*IN*/ BOOLEAN  LoopBack);USBCAMAPIPVOIDDDKAPIUSBCAMD_AdapterReceivePacket(  /*IN*/ PHW_STREAM_REQUEST_BLOCK  Srb,  /*IN*/ PUSBCAMD_DEVICE_DATA  DeviceData,  /*IN*/ PDEVICE_OBJECT  *DeviceObject,  /*IN*/ BOOLEAN  NeedsCompletion);USBCAMAPINTSTATUSDDKAPIUSBCAMD_ControlVendorCommand(  /*IN*/ PVOID  DeviceContext,  /*IN*/ UCHAR  Request,  /*IN*/ USHORT  Value,  /*IN*/ USHORT  Index,  /*IN*/ PVOID  Buffer,  /*IN OUT*/ PULONG  BufferLength,  /*IN*/ BOOLEAN  GetData,  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  CommandComplete,  /*IN*/ PVOID  CommandContext);typedef VOID DDKAPI(*PADAPTER_RECEIVE_PACKET_ROUTINE)(  /*IN*/ PHW_STREAM_REQUEST_BLOCK  Srb);USBCAMAPIULONGDDKAPIUSBCAMD_DriverEntry(  PVOID  Context1,  PVOID  Context2,  ULONG  DeviceContextSize,  ULONG  FrameContextSize,  PADAPTER_RECEIVE_PACKET_ROUTINE  ReceivePacket);USBCAMAPINTSTATUSDDKAPIUSBCAMD_GetRegistryKeyValue(  /*IN*/ HANDLE  Handle,  /*IN*/ PWCHAR  KeyNameString,  /*IN*/ ULONG  KeyNameStringLength,  /*IN*/ PVOID  Data,  /*IN*/ ULONG  DataLength);USBCAMAPINTSTATUSDDKAPIUSBCAMD_SelectAlternateInterface(  /*IN*/ PVOID  DeviceContext,  /*IN OUT*/ PUSBD_INTERFACE_INFORMATION  RequestInterface);#define USBCAMD_VERSION_200               0x200typedef struct _USBCAMD_INTERFACE {  INTERFACE  Interface;  PFNUSBCAMD_WaitOnDeviceEvent  USBCAMD_WaitOnDeviceEvent;  PFNUSBCAMD_BulkReadWrite  USBCAMD_BulkReadWrite;  PFNUSBCAMD_SetVideoFormat  USBCAMD_SetVideoFormat;  PFNUSBCAMD_SetIsoPipeState  USBCAMD_SetIsoPipeState;  PFNUSBCAMD_CancelBulkReadWrite  USBCAMD_CancelBulkReadWrite;} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE;typedef VOID DDKAPI(*PSTREAM_RECEIVE_PACKET)(  /*IN*/ PVOID  Srb,  /*IN*/ PVOID  DeviceContext,  /*IN*/ PBOOLEAN  Completed);#if defined(DEBUG_LOG)USBCAMAPIVOIDDDKAPIUSBCAMD_Debug_LogEntry(  /*IN*/ CHAR  *Name,  /*IN*/ ULONG  Info1,  /*IN*/ ULONG  Info2,  /*IN*/ ULONG  Info3);#define ILOGENTRY(sig, info1, info2, info3) \  USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3)#else#define ILOGENTRY(sig, info1, info2, info3)#endif /* DEBUG_LOG */#pragma pack(pop)#ifdef __cplusplus}#endif#endif /* !defined(__USB_H) && !defined(__USBDI_H) */#endif /* __USBCAMDI_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -