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

📄 1394camapi.h

📁 IEEE-1394 Digital Camera Windows Driver
💻 H
📖 第 1 页 / 共 3 页
字号:
//
// struct used to pass in with IOCTL_SET_ADDRESS_DATA
//
typedef struct _SET_ADDRESS_DATA {
    HANDLE          hAddressRange;
    ULONG           nLength;
    ULONG           ulOffset;
    UCHAR           Data[1];
} SET_ADDRESS_DATA, *PSET_ADDRESS_DATA,GET_ADDRESS_DATA, *PGET_ADDRESS_DATA;

//
// struct used to pass in with IOCTL_ASYNC_WRITE
//
typedef struct _ASYNC_WRITE {
    ULONG           bRawMode;
    ULONG           bGetGeneration;
    IO_ADDRESS      DestinationAddress;
    ULONG           nNumberOfBytesToWrite;
    ULONG           nBlockSize;
    ULONG           fulFlags;
    ULONG           ulGeneration;
    UCHAR           Data[4];
} ASYNC_WRITE, *PASYNC_WRITE;

//
// struct used to pass in with IOCTL_ASYNC_LOCK
//
typedef struct _ASYNC_LOCK {
    ULONG           bRawMode;
    ULONG           bGetGeneration;
    IO_ADDRESS      DestinationAddress;
    ULONG           nNumberOfArgBytes;
    ULONG           nNumberOfDataBytes;
    ULONG           fulTransactionType;
    ULONG           fulFlags;
    ULONG           Arguments[2];
    ULONG           DataValues[2];
    ULONG           ulGeneration;
    ULONG           Buffer[2];
} ASYNC_LOCK, *PASYNC_LOCK;

//
// struct used to pass in with IOCTL_ASYNC_STREAM
//
typedef struct _ASYNC_STREAM {
    ULONG           nNumberOfBytesToStream;
    ULONG           fulFlags;
    ULONG           ulTag;
    ULONG           nChannel;
    ULONG           ulSynch;
    ULONG           nSpeed;
    UCHAR           Data[1];
} ASYNC_STREAM, *PASYNC_STREAM;

//
// struct used to pass in with IOCTL_ISOCH_ALLOCATE_BANDWIDTH
//
typedef struct _ISOCH_ALLOCATE_BANDWIDTH {
    ULONG           nMaxBytesPerFrameRequested;
    ULONG           fulSpeed;
    HANDLE          hBandwidth;
    ULONG           BytesPerFrameAvailable;
    ULONG           SpeedSelected;
} ISOCH_ALLOCATE_BANDWIDTH, *PISOCH_ALLOCATE_BANDWIDTH;

//
// struct used to pass in with IOCTL_ISOCH_ALLOCATE_CHANNEL
//
typedef struct _ISOCH_ALLOCATE_CHANNEL {
    ULONG           nRequestedChannel;
    ULONG           Channel;
    LARGE_INTEGER   ChannelsAvailable;
} ISOCH_ALLOCATE_CHANNEL, *PISOCH_ALLOCATE_CHANNEL;

//
// struct used to pass in with IOCTL_ISOCH_ALLOCATE_RESOURCES
//
typedef struct _ISOCH_ALLOCATE_RESOURCES {
    ULONG           fulSpeed;
    ULONG           fulFlags;
    ULONG           nChannel;
    ULONG           nMaxBytesPerFrame;
    ULONG           nNumberOfBuffers;
    ULONG           nMaxBufferSize;
    ULONG           nQuadletsToStrip;
    HANDLE          hResource;
} ISOCH_ALLOCATE_RESOURCES, *PISOCH_ALLOCATE_RESOURCES;

//
// struct used to pass in isoch descriptors
//
typedef struct _RING3_ISOCH_DESCRIPTOR {
    ULONG           fulFlags;
    ULONG           ulLength;
    ULONG           nMaxBytesPerFrame;
    ULONG           ulSynch;
    ULONG           ulTag;
    CYCLE_TIME      CycleTime;
    ULONG           bUseCallback;
    ULONG           bAutoDetach;
    UCHAR           Data[1];
} RING3_ISOCH_DESCRIPTOR, *PRING3_ISOCH_DESCRIPTOR;

//
// struct used to pass in with IOCTL_ISOCH_ATTACH_BUFFERS
//
typedef struct _ISOCH_ATTACH_BUFFERS {
    HANDLE                  hResource;
    ULONG                   nNumberOfDescriptors;
    ULONG                   ulBufferSize;
    ULONG                   pIsochDescriptor;
    RING3_ISOCH_DESCRIPTOR  R3_IsochDescriptor[1];
} ISOCH_ATTACH_BUFFERS, *PISOCH_ATTACH_BUFFERS;

//
// struct used to pass in with IOCTL_ISOCH_DETACH_BUFFERS
//
typedef struct _ISOCH_DETACH_BUFFERS {
    HANDLE          hResource;
    ULONG           nNumberOfDescriptors;
    ULONG           pIsochDescriptor;
} ISOCH_DETACH_BUFFERS, *PISOCH_DETACH_BUFFERS;

//
// struct used to pass in with IOCTL_ISOCH_LISTEN
//
typedef struct _ISOCH_LISTEN {
    HANDLE          hResource;
    ULONG           fulFlags;
    CYCLE_TIME      StartTime;
} ISOCH_LISTEN, *PISOCH_LISTEN;

//
// struct used to pass in with IOCTL_ISOCH_QUERY_RESOURCES
//
typedef struct _ISOCH_QUERY_RESOURCES {
    ULONG           fulSpeed;
    ULONG           BytesPerFrameAvailable;
    LARGE_INTEGER   ChannelsAvailable;
} ISOCH_QUERY_RESOURCES, *PISOCH_QUERY_RESOURCES;

//
// struct used to pass in with IOCTL_ISOCH_SET_CHANNEL_BANDWIDTH
//
typedef struct _ISOCH_SET_CHANNEL_BANDWIDTH {
    HANDLE          hBandwidth;
    ULONG           nMaxBytesPerFrame;
} ISOCH_SET_CHANNEL_BANDWIDTH, *PISOCH_SET_CHANNEL_BANDWIDTH;

//
// struct used to pass in with IOCTL_ISOCH_STOP
//
typedef struct _ISOCH_STOP {
    HANDLE          hResource;
    ULONG           fulFlags;
} ISOCH_STOP, *PISOCH_STOP;

//
// struct used to pass in with IOCTL_ISOCH_TALK
//
typedef struct _ISOCH_TALK {
    HANDLE          hResource;
    ULONG           fulFlags;
    CYCLE_TIME      StartTime;
} ISOCH_TALK, *PISOCH_TALK;

//
// struct used to pass in with IOCTL_GET_LOCAL_HOST_INFORMATION
//
typedef struct _GET_LOCAL_HOST_INFORMATION {
    ULONG           Status;
    ULONG           nLevel;
    ULONG           ulBufferSize;
    UCHAR           Information[1];
} GET_LOCAL_HOST_INFORMATION, *PGET_LOCAL_HOST_INFORMATION;

//
// struct used to pass in with IOCTL_GET_1394_ADDRESS_FROM_DEVICE_OBJECT
//
typedef struct _GET_1394_ADDRESS {
    ULONG           fulFlags;
    NODE_ADDRESS    NodeAddress;
} GET_1394_ADDRESS, *PGET_1394_ADDRESS;

//
// struct used to pass in with IOCTL_GET_MAX_SPEED_BETWEEN_DEVICES
//
typedef struct _GET_MAX_SPEED_BETWEEN_DEVICES {
    ULONG           fulFlags;
    ULONG           ulNumberOfDestinations;
    ULONG           hDestinationDeviceObjects[64];
    ULONG           fulSpeed;
} GET_MAX_SPEED_BETWEEN_DEVICES, *PGET_MAX_SPEED_BETWEEN_DEVICES;

//
// struct used to pass in with IOCTL_SET_DEVICE_XMIT_PROPERTIES
//
typedef struct _DEVICE_XMIT_PROPERTIES {
    ULONG           fulSpeed;
    ULONG           fulPriority;
} DEVICE_XMIT_PROPERTIES, *PDEVICE_XMIT_PROPERTIES;

//
// struct used to pass in with IOCTL_SET_LOCAL_HOST_INFORMATION
//
typedef struct _SET_LOCAL_HOST_INFORMATION {
    ULONG           nLevel;
    ULONG           ulBufferSize;
    UCHAR           Information[1];
} SET_LOCAL_HOST_INFORMATION, *PSET_LOCAL_HOST_INFORMATION;

//
// define's used to make sure the dll/sys driver are in synch
//
#define DIAGNOSTIC_VERSION                      1
#define DIAGNOSTIC_SUB_VERSION                  1

//
// struct used to pass in with IOCTL_GET_CMDR_VERSION
//
typedef struct _VERSION_DATA {
    ULONG           ulVersion;
    ULONG           ulSubVersion;
} VERSION_DATA, *PVERSION_DATA;

//
// struct for use with reading/writing registers
//

typedef struct _REGISTER_IOBUF
{
	ULONG		ulOffset;
	UCHAR		data[4];
} REGISTER_IOBUF, *PREGISTER_IOBUF;	

//
// struct used to get camera specification information
//

typedef struct _CAMERA_SPECIFICATION
{
	ULONG		ulSpecification;
	ULONG		ulVersion;
} CAMERA_SPECIFICATION, *PCAMERA_SPECIFICATION;

#ifndef DRIVER

//
// struct used with start/stop async loopback
//
typedef struct _ASYNC_LOOPBACK_PARAMS {
    HWND                            hWnd;
    PSTR                            szDeviceName;
    BOOLEAN                         bKill;
    HANDLE                          hThread;
    UINT                            ThreadId;
    ULONG                           ulLoopFlag;
    ULONG                           nIterations;
    ULONG                           ulPass;
    ULONG                           ulFail;
    ULONG                           ulIterations;
    ADDRESS_OFFSET                  AddressOffset;
    ULONG                           nMaxBytes;
} ASYNC_LOOPBACK_PARAMS, *PASYNC_LOOPBACK_PARAMS;

//
// struct used with start/stop isoch loopback
//
typedef struct _ISOCH_LOOPBACK_PARAMS {
    HWND                            hWnd;
    PSTR                            szDeviceName;
    BOOLEAN                         bKill;
    BOOLEAN                         bLoopback;
    BOOLEAN                         bAutoFill;
    HANDLE                          hThread;
    UINT                            ThreadId;
    ULONG                           ulLoopFlag;
    ULONG                           nIterations;
    ULONG                           ulPass;
    ULONG                           ulFail;
    ULONG                           ulIterations;
    BOOLEAN                         bAutoAlloc;
    ISOCH_ATTACH_BUFFERS            isochAttachBuffers;
} ISOCH_LOOPBACK_PARAMS, *PISOCH_LOOPBACK_PARAMS;

//
// struct used with get image thread
//
typedef struct _ISOCH_GET_IMAGE_PARAMS {
    HWND                            hWnd;
    PSTR                            szDeviceName;
    BOOLEAN                         bKill;
    BOOLEAN                         bAutoFill;
    BOOLEAN                         bAutoAlloc;
    HANDLE                          hThread;
    UINT                            ThreadId;
	OVERLAPPED						overLapped;
    PISOCH_ATTACH_BUFFERS           pIsochAttachBuffers;
	UCHAR*							pData;
} ISOCH_GET_IMAGE_PARAMS, *PISOCH_GET_IMAGE_PARAMS;

//
// struct used with image acquisition
//

typedef struct _ACQUISITION_BUFFER {
	OVERLAPPED						overLapped;
    PISOCH_ATTACH_BUFFERS           pIsochAttachBuffers;
	struct _ACQUISITION_BUFFER		*pNextBuffer;
	int								index;
	} ACQUISITION_BUFFER, *PACQUISITION_BUFFER;

//
// struct used with start/stop async stream loopback
//
typedef struct _ASYNC_STREAM_LOOPBACK_PARAMS {
    HWND                            hWnd;           // filled in by 1394api.dll
    PSTR                            szDeviceName;   // filled in by 1394api.dll
    BOOLEAN                         bKill;          // filled in by 1394api.dll
    HANDLE                          hThread;        // filled in by 1394api.dll
    UINT                            ThreadId;       // filled in by 1394api.dll
    ULONG                           ulPass;         // filled in by 1394api.dll
    ULONG                           ulFail;         // filled in by 1394api.dll
    ULONG                           ulIterations;   // filled in by 1394api.dll
    BOOLEAN                         bAutoAlloc;     // filled in by app
    BOOLEAN                         bAutoFill;      // filled in by app
    ULONG                           nIterations;    // filled in by app
    ASYNC_STREAM                    asyncStream;    // filled in by app
} ASYNC_STREAM_LOOPBACK_PARAMS, *PASYNC_STREAM_LOOPBACK_PARAMS;

typedef struct _DEVICE_LIST {
    CHAR            DeviceName[255];
} DEVICE_LIST, *PDEVICE_LIST;

typedef struct _DEVICE_DATA {
    ULONG           numDevices;
    DEVICE_LIST     deviceList[10];
} DEVICE_DATA, *PDEVICE_DATA;

#define bswap(value)    (((ULONG) (value)) << 24 |\
                        (((ULONG) (value)) & 0x0000FF00) << 8 |\
                        (((ULONG) (value)) & 0x00FF0000) >> 8 |\
                        ((ULONG) (value)) >> 24)

#define bswapw(value)   (((USHORT) (value)) << 8 |\
                        (((USHORT) (value)) & 0xff00) >> 8)

//
// prototypes
//
/*DWORD
CAMAPI
RegisterClient(
    HWND    hWnd
    );

DWORD
CAMAPI
DeRegisterClient(
    HWND    hWnd
    );
*/

DWORD
CAMAPI
GetCameraSpecification( PSTR szDeviceName, PCAMERA_SPECIFICATION pSpec);

DWORD
CAMAPI
GetCmdrState( PSTR szDeviceName);

DWORD
CAMAPI
ResetCmdrState( PSTR szDeviceName );

DWORD
CAMAPI
SetCmdrTraceLevel( PSTR szDeviceName, DWORD nlevel);

DWORD
CAMAPI
GetDeviceList(
    PDEVICE_DATA    DeviceData
    );

void
CAMAPI
DiagnosticMode(
    HWND    hWnd,
    PSTR    szBusName,
    BOOL    bMode,
    BOOL    bAll
    );

ULONG
CAMAPI
GetCmdrVersion(
    HWND            hWnd,
    PSTR            szDeviceName,
    PVERSION_DATA   Version,
    BOOL            bMatch
    );

ULONG
CAMAPI
AllocateAddressRange(
    HWND                        hWnd,
    PSTR                        szDeviceName,
    PALLOCATE_ADDRESS_RANGE     allocateAddressRange,
    BOOL                        bAutoAlloc

⌨️ 快捷键说明

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