This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/ddk/usbcamdi.h

165 lines
7.7 KiB
C

/*
* usbcamdi.h USB camera definitions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef __USBCAMDI_H__
#define __USBCAMDI_H__
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Pipe flags */
#define USBCAMD_DATA_PIPE 0x0001
#define USBCAMD_MULTIPLEX_PIPE 0x0002
#define USBCAMD_SYNC_PIPE 0x0004
#define USBCAMD_DONT_CARE_PIPE 0x0008
/* Stream association values */
#define USBCAMD_VIDEO_STREAM 0x01
#define USBCAMD_STILL_STREAM 0x02
#define USBCAMD_VIDEO_STILL_STREAM (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)
/* Packet flags */
#define USBCAMD_PROCESSPACKETEX_DropFrame 0x0002
#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill 0x0004
#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 0x0008
/* Pipe state flags */
#define USBCAMD_STOP_STREAM 0x00000001L
#define USBCAMD_START_STREAM 0x00000000L
/* USB camera version number */
#define USBCAMD_VERSION_200 0x0200
/* Pipe configuration descriptor */
typedef struct _pipe_config_descriptor {
CHAR StreamAssociation;
UCHAR PipeConfigFlags;
} USBCAMD_Pipe_Config_Descriptor;
typedef USBCAMD_Pipe_Config_Descriptor *PUSBCAMD_Pipe_Config_Descriptor;
/* Camera control flags */
typedef enum {
USBCAMD_CamControlFlag_NoVideoRawProcessing = 0x0001,
USBCAMD_CamControlFlag_NoStillRawProcessing = 0x0002,
USBCAMD_CamControlFlag_AssociatedFormat = 0x0004,
USBCAMD_CamControlFlag_EnableDeviceEvents = 0x0008
} USBCAMD_CamControlFlags;
/* Camera callbacks */
typedef NTSTATUS (NTAPI *PCOMMAND_COMPLETE_FUNCTION)( PVOID, PVOID, NTSTATUS );
typedef VOID (NTAPI *PSTREAM_RECEIVE_PACKET)( PVOID, PVOID, PBOOLEAN );
typedef NTSTATUS (NTAPI *PCAM_INITIALIZE_ROUTINE)( PDEVICE_OBJECT, PVOID );
typedef NTSTATUS (NTAPI *PCAM_CONFIGURE_ROUTINE)( PDEVICE_OBJECT, PVOID, PUSBD_INTERFACE_INFORMATION, PUSB_CONFIGURATION_DESCRIPTOR, PLONG, PLONG );
typedef NTSTATUS (NTAPI *PCAM_CONFIGURE_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, PUSBD_INTERFACE_INFORMATION, PUSB_CONFIGURATION_DESCRIPTOR, ULONG, PUSBCAMD_Pipe_Config_Descriptor, PUSB_DEVICE_DESCRIPTOR );
typedef NTSTATUS (NTAPI *PCAM_START_CAPTURE_ROUTINE)( PDEVICE_OBJECT, PVOID );
typedef NTSTATUS (NTAPI *PCAM_START_CAPTURE_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, ULONG );
typedef NTSTATUS (NTAPI *PCAM_ALLOCATE_BW_ROUTINE)( PDEVICE_OBJECT, PVOID, PULONG, PVOID );
typedef NTSTATUS (NTAPI *PCAM_ALLOCATE_BW_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, PULONG, PVOID, ULONG );
typedef NTSTATUS (NTAPI *PCAM_FREE_BW_ROUTINE)( PDEVICE_OBJECT, PVOID );
typedef NTSTATUS (NTAPI *PCAM_FREE_BW_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, ULONG );
typedef VOID (NTAPI *PADAPTER_RECEIVE_PACKET_ROUTINE)( struct _HW_STREAM_REQUEST_BLOCK * );
typedef NTSTATUS (NTAPI *PCAM_STOP_CAPTURE_ROUTINE)( PDEVICE_OBJECT, PVOID );
typedef NTSTATUS (NTAPI *PCAM_STOP_CAPTURE_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, ULONG );
typedef ULONG (NTAPI *PCAM_PROCESS_PACKET_ROUTINE)( PDEVICE_OBJECT, PVOID, PVOID, PUSBD_ISO_PACKET_DESCRIPTOR, PVOID, PUSBD_ISO_PACKET_DESCRIPTOR, PVOID, PBOOLEAN, PBOOLEAN );
typedef ULONG (NTAPI *PCAM_PROCESS_PACKET_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, PVOID, PUSBD_ISO_PACKET_DESCRIPTOR, PVOID, PUSBD_ISO_PACKET_DESCRIPTOR, PVOID, PBOOLEAN, PULONG, PULONG );
typedef VOID (NTAPI *PCAM_NEW_FRAME_ROUTINE)( PVOID, PVOID );
typedef VOID (NTAPI *PCAM_NEW_FRAME_ROUTINE_EX)( PVOID, PVOID, ULONG, PULONG );
typedef NTSTATUS (NTAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE)( PDEVICE_OBJECT, PVOID, PVOID, PVOID, ULONG, PVOID, ULONG, ULONG, PULONG );
typedef NTSTATUS (NTAPI *PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)( PDEVICE_OBJECT, PVOID, PVOID, PVOID, ULONG, PVOID, ULONG, ULONG, PULONG, ULONG, ULONG );
typedef NTSTATUS (NTAPI *PCAM_STATE_ROUTINE)( PDEVICE_OBJECT, PVOID );
/* USB camera device data */
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;
typedef USBCAMD_DEVICE_DATA *PUSBCAMD_DEVICE_DATA;
/* USB camera device data (version 2) */
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;
typedef USBCAMD_DEVICE_DATA2 *PUSBCAMD_DEVICE_DATA2;
/* USB camera interface callbacks */
typedef NTSTATUS (NTAPI *PFNUSBCAMD_SetVideoFormat)( PVOID, struct _HW_STREAM_REQUEST_BLOCK * );
typedef NTSTATUS (NTAPI *PFNUSBCAMD_WaitOnDeviceEvent)( PVOID, ULONG, PVOID, ULONG, PCOMMAND_COMPLETE_FUNCTION, PVOID, BOOLEAN );
typedef NTSTATUS (NTAPI *PFNUSBCAMD_CancelBulkReadWrite)( PVOID, ULONG );
typedef NTSTATUS (NTAPI *PFNUSBCAMD_SetIsoPipeState)( PVOID, ULONG );
typedef NTSTATUS (NTAPI *PFNUSBCAMD_BulkReadWrite)( PVOID, USHORT, PVOID, ULONG, PCOMMAND_COMPLETE_FUNCTION, PVOID );
/* USB camera interface */
typedef struct {
INTERFACE Interface;
PFNUSBCAMD_WaitOnDeviceEvent USBCAMD_WaitOnDeviceEvent;
PFNUSBCAMD_BulkReadWrite USBCAMD_BulkReadWrite;
PFNUSBCAMD_SetVideoFormat USBCAMD_SetVideoFormat;
PFNUSBCAMD_SetIsoPipeState USBCAMD_SetIsoPipeState;
PFNUSBCAMD_CancelBulkReadWrite USBCAMD_CancelBulkReadWrite;
} USBCAMD_INTERFACE;
typedef USBCAMD_INTERFACE *PUSBCAMD_INTERFACE;
/* Functions in USBCAMD.SYS */
PVOID NTAPI USBCAMD_AdapterReceivePacket( struct _HW_STREAM_REQUEST_BLOCK *, PUSBCAMD_DEVICE_DATA, PDEVICE_OBJECT *, BOOLEAN );
NTSTATUS NTAPI USBCAMD_ControlVendorCommand( PVOID, UCHAR, USHORT, USHORT, PVOID, PULONG, BOOLEAN, PCOMMAND_COMPLETE_FUNCTION, PVOID );
ULONG NTAPI USBCAMD_DriverEntry( PVOID, PVOID, ULONG, ULONG, PADAPTER_RECEIVE_PACKET_ROUTINE );
NTSTATUS NTAPI USBCAMD_GetRegistryKeyValue( HANDLE, PWCHAR, ULONG, PVOID, ULONG );
ULONG NTAPI USBCAMD_InitializeNewInterface( PVOID, PVOID, ULONG, ULONG );
NTSTATUS NTAPI USBCAMD_SelectAlternateInterface( PVOID, PUSBD_INTERFACE_INFORMATION );
#ifdef DEBUG_LOG
VOID NTAPI USBCAMD_Debug_LogEntry( CHAR *, ULONG, ULONG, ULONG );
#endif
/* Other macros */
#ifdef DEBUG_LOG
#define ILOGENTRY( p1, p2, p3, p4 ) \
USBCAMD_Debug_LogEntry( p1, (ULONG)(p1), (ULONG)(p2), (ULONG)(p3) )
#else
#define ILOGENTRY( p1, p2, p3, p4 )
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __USBCAMDI_H__ */