📄 1394camapi.h
字号:
//
// 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 + -