holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/usbcamdi.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/usbcamdi.h	Thu Sep 16 09:43:14 2010 +0100
@@ -0,0 +1,404 @@
+/*
+ * 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 __cplusplus
+extern "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              0x00000000
+
+typedef 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;
+
+USBCAMAPI
+ULONG
+DDKAPI
+USBCAMD_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);
+
+USBCAMAPI
+PVOID
+DDKAPI
+USBCAMD_AdapterReceivePacket(
+  /*IN*/ PHW_STREAM_REQUEST_BLOCK  Srb,
+  /*IN*/ PUSBCAMD_DEVICE_DATA  DeviceData,
+  /*IN*/ PDEVICE_OBJECT  *DeviceObject,
+  /*IN*/ BOOLEAN  NeedsCompletion);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_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);
+
+USBCAMAPI
+ULONG
+DDKAPI
+USBCAMD_DriverEntry(
+  PVOID  Context1,
+  PVOID  Context2,
+  ULONG  DeviceContextSize,
+  ULONG  FrameContextSize,
+  PADAPTER_RECEIVE_PACKET_ROUTINE  ReceivePacket);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_GetRegistryKeyValue(
+  /*IN*/ HANDLE  Handle,
+  /*IN*/ PWCHAR  KeyNameString,
+  /*IN*/ ULONG  KeyNameStringLength,
+  /*IN*/ PVOID  Data,
+  /*IN*/ ULONG  DataLength);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_SelectAlternateInterface(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN OUT*/ PUSBD_INTERFACE_INFORMATION  RequestInterface);
+
+#define USBCAMD_VERSION_200               0x200
+
+typedef 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)
+
+USBCAMAPI
+VOID
+DDKAPI
+USBCAMD_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 */