📄 cs.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
Module Name:
cs.h
Abstract:
Windows CE Camera Driver Model/Connection and Streaming Architecture core definitions.
--*/
#if !defined(_CS_)
#define _CS_
#if defined(__TCS__)
#define _CS_NO_ANONYMOUS_STRUCTURES_ 1
#endif
#if !defined(_NTRTL_)
#ifndef DEFINE_GUIDEX
#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
#endif // !defined(DEFINE_GUIDEX)
#ifndef STATICGUIDOF
#define STATICGUIDOF(guid) STATIC_##guid
#endif // !defined(STATICGUIDOF)
#endif // !defined(_NTRTL_)
#ifndef SIZEOF_ARRAY
#define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0]))
#endif // !defined(SIZEOF_ARRAY)
#if defined(__cplusplus) && _MSC_VER >= 1100
#define DEFINE_GUIDSTRUCT(g, n) struct __declspec(uuid(g)) n
#define DEFINE_GUIDNAMED(n) __uuidof(struct n)
#else // !defined(__cplusplus)
#define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n)
#define DEFINE_GUIDNAMED(n) n
#endif // !defined(__cplusplus)
//===========================================================================
#define STATIC_GUID_NULL \
0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL);
#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
//===========================================================================
#define IOCTL_CS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS)
#ifndef UNDER_CE
#define IOCTL_CS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_CS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS)
#define IOCTL_CS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS)
#endif //#ifndef UNDER_CE
//===========================================================================
#ifndef UNDER_CE
typedef enum {
CSRESET_BEGIN,
CSRESET_END
} CSRESET;
#endif //#ifndef UNDER_CE
typedef enum {
CSSTATE_STOP,
#ifndef UNDER_CE
CSSTATE_ACQUIRE,
#endif //#ifndef UNDER_CE
CSSTATE_PAUSE,
CSSTATE_RUN
} CSSTATE, *PCSSTATE;
#ifndef UNDER_CE
#define CSPRIORITY_LOW 0x00000001
#define CSPRIORITY_NORMAL 0x40000000
#define CSPRIORITY_HIGH 0x80000000
#define CSPRIORITY_EXCLUSIVE 0xFFFFFFFF
typedef struct {
ULONG PriorityClass;
ULONG PrioritySubClass;
} CSPRIORITY, *PCSPRIORITY;
#endif //#ifndef UNDER_CE
typedef struct {
union {
#if defined( _CS_NO_ANONYMOUS_STRUCTURES_ )
struct _IDENTIFIER {
#else
struct {
#endif
GUID Set;
ULONG Id;
ULONG Flags;
};
LONGLONG Alignment;
};
} CSIDENTIFIER, *PCSIDENTIFIER;
typedef CSIDENTIFIER CSPROPERTY, *PCSPROPERTY, CSMETHOD, *PCSMETHOD, CSEVENT, *PCSEVENT;
#ifndef UNDER_CE
#define CSMETHOD_TYPE_NONE 0x00000000
#define CSMETHOD_TYPE_READ 0x00000001
#define CSMETHOD_TYPE_WRITE 0x00000002
#define CSMETHOD_TYPE_MODIFY 0x00000003
#define CSMETHOD_TYPE_SOURCE 0x00000004
#define CSMETHOD_TYPE_SEND 0x00000001
#define CSMETHOD_TYPE_SETSUPPORT 0x00000100
#define CSMETHOD_TYPE_BASICSUPPORT 0x00000200
#define CSMETHOD_TYPE_TOPOLOGY 0x10000000
#endif //#ifndef UNDER_CE
#define CSPROPERTY_TYPE_GET 0x00000001
#define CSPROPERTY_TYPE_SET 0x00000002
#define CSPROPERTY_TYPE_SETSUPPORT 0x00000100
#define CSPROPERTY_TYPE_BASICSUPPORT 0x00000200
#ifndef UNDER_CE
#define CSPROPERTY_TYPE_RELATIONS 0x00000400
#define CSPROPERTY_TYPE_SERIALIZESET 0x00000800
#define CSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
#define CSPROPERTY_TYPE_SERIALIZERAW 0x00002000
#define CSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
#define CSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
#endif //#ifndef UNDER_CE
#define CSPROPERTY_TYPE_DEFAULTVALUES 0x00010000
#ifndef UNDER_CE
#define CSPROPERTY_TYPE_TOPOLOGY 0x10000000
typedef struct {
CSPROPERTY Property;
ULONG NodeId;
ULONG Reserved;
} CSP_NODE, *PCSP_NODE;
typedef struct {
CSMETHOD Method;
ULONG NodeId;
ULONG Reserved;
} CSM_NODE, *PCSM_NODE;
typedef struct {
CSEVENT Event;
ULONG NodeId;
ULONG Reserved;
} CSE_NODE, *PCSE_NODE;
#endif //#ifndef UNDER_CE
#define STATIC_CSPROPTYPESETID_General \
0x97E99BA0L, 0xBDEA, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", CSPROPTYPESETID_General);
#define CSPROPTYPESETID_General DEFINE_GUIDNAMED(CSPROPTYPESETID_General)
#if defined(_NTDDK_) && !defined(__wtypes_h__)
enum VARENUM {
VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
VT_DISPATCH = 9,
VT_ERROR = 10,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_UNKNOWN = 13,
VT_DECIMAL = 14,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_INT = 22,
VT_UINT = 23,
VT_VOID = 24,
VT_HRESULT = 25,
VT_PTR = 26,
VT_SAFEARRAY = 27,
VT_CARRAY = 28,
VT_USERDEFINED = 29,
VT_LPSTR = 30,
VT_LPWSTR = 31,
VT_FILETIME = 64,
VT_BLOB = 65,
VT_STREAM = 66,
VT_STORAGE = 67,
VT_STREAMED_OBJECT = 68,
VT_STORED_OBJECT = 69,
VT_BLOB_OBJECT = 70,
VT_CF = 71,
VT_CLSID = 72,
VT_VECTOR = 0x1000,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000,
VT_RESERVED = 0x8000,
VT_ILLEGAL = 0xffff,
VT_ILLEGALMASKED = 0xfff,
VT_TYPEMASK = 0xfff
};
#endif // _NTDDK_ && !__wtypes_h__
typedef struct {
ULONG Size;
ULONG Count;
} CSMULTIPLE_ITEM, *PCSMULTIPLE_ITEM;
typedef struct {
ULONG AccessFlags;
ULONG DescriptionSize;
CSIDENTIFIER PropTypeSet;
ULONG MembersListCount;
ULONG Reserved;
} CSPROPERTY_DESCRIPTION, *PCSPROPERTY_DESCRIPTION;
#define CSPROPERTY_MEMBER_RANGES 0x00000001
#define CSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
#define CSPROPERTY_MEMBER_VALUES 0x00000003
#define CSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
#define CSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
#define CSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
typedef struct {
ULONG MembersFlags;
ULONG MembersSize;
ULONG MembersCount;
ULONG Flags;
} CSPROPERTY_MEMBERSHEADER, *PCSPROPERTY_MEMBERSHEADER;
typedef union {
#if defined( _CS_NO_ANONYMOUS_STRUCTURES_ )
struct _SIGNED {
#else
struct {
#endif
LONG SignedMinimum;
LONG SignedMaximum;
};
#if defined( _CS_NO_ANONYMOUS_STRUCTURES_ )
struct _UNSIGNED {
#else
struct {
#endif
ULONG UnsignedMinimum;
ULONG UnsignedMaximum;
};
} CSPROPERTY_BOUNDS_LONG, *PCSPROPERTY_BOUNDS_LONG;
typedef union {
#if defined( _CS_NO_ANONYMOUS_STRUCTURES_ )
struct _SIGNED64 {
#else
struct {
#endif
LONGLONG SignedMinimum;
LONGLONG SignedMaximum;
};
#if defined( _CS_NO_ANONYMOUS_STRUCTURES_ )
struct _UNSIGNED64 {
#else
struct {
#endif
#if defined(_NTDDK_)
ULONGLONG UnsignedMinimum;
ULONGLONG UnsignedMaximum;
#else // !_NTDDK_
DWORDLONG UnsignedMinimum;
DWORDLONG UnsignedMaximum;
#endif // !_NTDDK_
};
} CSPROPERTY_BOUNDS_LONGLONG, *PCSPROPERTY_BOUNDS_LONGLONG;
typedef struct {
ULONG SteppingDelta;
ULONG Reserved;
CSPROPERTY_BOUNDS_LONG Bounds;
} CSPROPERTY_STEPPING_LONG, *PCSPROPERTY_STEPPING_LONG;
typedef struct {
#if defined(_NTDDK_)
ULONGLONG SteppingDelta;
#else // !_NTDDK_
DWORDLONG SteppingDelta;
#endif // !_NTDDK_
CSPROPERTY_BOUNDS_LONGLONG Bounds;
} CSPROPERTY_STEPPING_LONGLONG, *PCSPROPERTY_STEPPING_LONGLONG;
//===========================================================================
#ifndef UNDER_CE
#if defined(_NTDDK_)
//
// Structure forward declarations.
//
typedef struct _CSDEVICE_DESCRIPTOR
CSDEVICE_DESCRIPTOR, *PCSDEVICE_DESCRIPTOR;
typedef struct _CSDEVICE_DISPATCH
CSDEVICE_DISPATCH, *PCSDEVICE_DISPATCH;
typedef struct _CSDEVICE
CSDEVICE, *PCSDEVICE;
typedef struct _CSFILTERFACTORY
CSFILTERFACTORY, *PCSFILTERFACTORY;
typedef struct _CSFILTER_DESCRIPTOR
CSFILTER_DESCRIPTOR, *PCSFILTER_DESCRIPTOR;
typedef struct _CSFILTER_DISPATCH
CSFILTER_DISPATCH, *PCSFILTER_DISPATCH;
typedef struct _CSFILTER
CSFILTER, *PCSFILTER;
typedef struct _CSPIN_DESCRIPTOR_EX
CSPIN_DESCRIPTOR_EX, *PCSPIN_DESCRIPTOR_EX;
typedef struct _CSPIN_DISPATCH
CSPIN_DISPATCH, *PCSPIN_DISPATCH;
typedef struct _CSCLOCK_DISPATCH
CSCLOCK_DISPATCH, *PCSCLOCK_DISPATCH;
typedef struct _CSALLOCATOR_DISPATCH
CSALLOCATOR_DISPATCH, *PCSALLOCATOR_DISPATCH;
typedef struct _CSPIN
CSPIN, *PCSPIN;
typedef struct _CSNODE_DESCRIPTOR
CSNODE_DESCRIPTOR, *PCSNODE_DESCRIPTOR;
typedef struct _CSSTREAM_POINTER_OFFSET
CSSTREAM_POINTER_OFFSET, *PCSSTREAM_POINTER_OFFSET;
typedef struct _CSSTREAM_POINTER
CSSTREAM_POINTER, *PCSSTREAM_POINTER;
typedef struct _CSMAPPING
CSMAPPING, *PCSMAPPING;
typedef struct _CSPROCESSPIN
CSPROCESSPIN, *PCSPROCESSPIN;
typedef struct _CSPROCESSPIN_INDEXENTRY
CSPROCESSPIN_INDEXENTRY, *PCSPROCESSPIN_INDEXENTRY;
#endif // _NTDDK_
typedef PVOID PCSWORKER;
typedef struct {
ULONG NotificationType;
union {
struct {
HANDLE Event;
ULONG_PTR Reserved[2];
} EventHandle;
struct {
HANDLE Semaphore;
ULONG Reserved;
LONG Adjustment;
} SemaphoreHandle;
#if defined(_NTDDK_)
struct {
PVOID Event;
KPRIORITY Increment;
ULONG_PTR Reserved;
} EventObject;
struct {
PVOID Semaphore;
KPRIORITY Increment;
LONG Adjustment;
} SemaphoreObject;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -