WIA_PROPERTY_INFO 구조체(wiamindr_lh.h)
WIA_PROPERTY_INFO 구조체는 임의 형식의 항목 속성에 대한 기본 액세스 및 유효한 값 정보를 저장하는 데 사용됩니다.
구문
typedef struct _WIA_PROPERTY_INFO {
ULONG lAccessFlags;
VARTYPE vt;
union {
struct {
LONG Min;
LONG Nom;
LONG Max;
LONG Inc;
} Range;
struct {
DOUBLE Min;
DOUBLE Nom;
DOUBLE Max;
DOUBLE Inc;
} RangeFloat;
struct {
LONG cNumList;
LONG Nom;
BYTE *pList;
} List;
struct {
LONG cNumList;
DOUBLE Nom;
BYTE *pList;
} ListFloat;
struct {
LONG cNumList;
GUID Nom;
GUID *pList;
} ListGuid;
struct {
LONG cNumList;
BSTR Nom;
BSTR *pList;
} ListBStr;
struct {
LONG Nom;
LONG ValidBits;
} Flag;
struct {
LONG Dummy;
} None;
} ValidVal;
} WIA_PROPERTY_INFO, *PWIA_PROPERTY_INFO;
멤버
lAccessFlags
속성에 대한 액세스 및 속성 특성 플래그를 지정합니다. 자세한 내용은 속성 특성을 참조하세요.
vt
속성의 변형 데이터 형식을 지정합니다. 다음 중 하나일 수 있는 이 멤버는 ValidValunion 의 어떤 구조체 멤버가 유효한지 제어합니다.
VT_UI1
VT_UI2
VT_UI4
VT_I2
VT_I4
VT_R4
VT_R8
VT_CLSID
VT_BSTR
자세한 내용은 PROPVARIANT를 참조하세요.
ValidVal
ValidVal.Range
속성의 유효한 값이 정수 값 범위로 지정될 때 채워지는 구조체입니다.
ValidVal.Range.Min
속성의 최소값입니다.
ValidVal.Range.Nom
속성의 명목 값입니다.
ValidVal.Range.Max
속성의 최대값입니다.
ValidVal.Range.Inc
사용할 수 있는 증분 값입니다.
ValidVal.RangeFloat
속성의 유효한 값이 부동 소수점 값 범위로 지정되고 속성 형식이 float 또는 double일 때 채워지는 구조체입니다.
ValidVal.RangeFloat.Min
속성의 최소값입니다.
ValidVal.RangeFloat.Nom
속성의 명목 값입니다.
ValidVal.RangeFloat.Max
속성의 최대값입니다.
ValidVal.RangeFloat.Inc
사용할 수 있는 증분 값입니다.
ValidVal.List
속성의 유효한 값이 정수 값 목록으로 지정될 때 채워지는 구조체입니다.
ValidVal.List.cNumList
pList가 가리키는 유효한 값 배열의 요소 수입니다.
ValidVal.List.Nom
속성의 명목 값입니다.
ValidVal.List.pList
속성을 설정할 수 있는 유효한 값의 배열입니다.
ValidVal.ListFloat
속성의 유효한 값이 부동 소수점 값 목록으로 지정될 때 채워지는 구조체입니다.
ValidVal.ListFloat.cNumList
pList가 가리키는 유효한 값 배열의 요소 수입니다.
ValidVal.ListFloat.Nom
속성의 명목 값입니다.
ValidVal.ListFloat.pList
속성을 설정할 수 있는 유효한 값의 배열입니다.
ValidVal.ListGuid
속성의 유효한 값이 GUID 목록에 의해 지정될 때 채워지는 구조체입니다.
ValidVal.ListGuid.cNumList
pList가 가리키는 유효한 값 배열의 요소 수입니다.
ValidVal.ListGuid.Nom
속성의 명목 값입니다.
ValidVal.ListGuid.pList
속성을 설정할 수 있는 유효한 값의 배열입니다.
ValidVal.ListBStr
속성의 유효한 값이 문자열 목록으로 지정될 때 채워지는 구조체입니다.
ValidVal.ListBStr.cNumList
pList가 가리키는 유효한 값 배열의 요소 수입니다.
ValidVal.ListBStr.Nom
속성의 명목 값입니다.
ValidVal.ListBStr.pList
속성을 설정할 수 있는 유효한 값의 배열입니다.
ValidVal.Flag
속성의 유효한 값이 플래그의 비트 집합으로 지정될 때 채워지는 구조체입니다.
ValidVal.Flag.Nom
속성의 명목 값입니다.
ValidVal.Flag.ValidBits
설정할 수 있는 비트 값을 나타내는 마스크입니다. 이 멤버는 가능한 모든 사용자 정의 플래그 값의 비트 OR이어야 합니다.
ValidVal.None
속성의 유효한 값이 목록, 범위 또는 비트 집합에 제공되지 않을 때 채워지는 구조체입니다. 이 구조체에는 속성이 NONE 형식임을 나타내는 Dummy라는 멤버가 포함되어 있습니다.
ValidVal.None.Dummy
설명
WIA_PROPERTY_INFO 미니 드라이버에서 임의 형식의 속성에 대한 정보를 저장하는 데 사용됩니다. 이 구조체는 wiasSetItemPropAttribs 에서 속성의 유효한 값을 설정하는 데도 사용됩니다. lAccessFlags 멤버는 속성에 대한 액세스가 읽기 전용인지 읽기/쓰기인지를 제어합니다. 이 멤버는 값 목록, 값 범위 또는 플래그 비트 집합으로 정의되는 경우 속성의 유효한 값 집합에 대한 정보도 전달합니다. vt 멤버에는 속성의 형식에 대한 정보가 포함됩니다. 두 멤버를 모두 사용하여 ValidValunion 에 액세스할 수 있는 멤버를 결정해야 합니다.
예를 들어 유효한 값이 -128~127 범위의 정수이고 명목 값이 0인 long 형식의 읽기/쓰기 속성의 경우 lAccessFlags 는 WIA_PROP_RW | WIA_PROP_RANGE 및 vt 는 VT_I4 설정됩니다. Range.Min 은 -128로 설정되고 Range.Max 는 127로 설정되고 Range.Inc 는 1로 설정됩니다. Range.Nom 은 0으로 설정됩니다.
유효한 값이 세 개의 GUID 값 목록으로 정의된 다른 속성의 경우 lAccessFlags 는 WIA_PROP_LIST 비트 집합을 가지며 vt 는 VT_CLSID 설정됩니다. ListGuid.cNumList 는 3으로 설정되고 세 GUID는 ListGuid.pList[0], ListGuid.pList[1], ListGuid.pList[2]입니다.
유효한 값이 0x01, 0x02, 0x04 및 0x08 값의 비트 집합으로 정의된 속성은 WIA_PROP_FLAG 비트가 lAccessFlags로 설정되고 vt 는 VT_UI4 설정됩니다. 이러한 속성의 경우 Flag.ValidBits 에 저장된 값은 앞에서 언급한 4개의 플래그 값 중 비트 OR인 0x0F.
다음 예제에서는 WIA_PROPERTY_INFO 배열 데이터를 사용하는 방법과 wiasWriteMultiple 을 호출하여 속성 값을 설정하는 방법을 보여 줍니다.
초기화는 다음 예제와 같을 수 있습니다.
// Initialize WIA_IPA_ITEM_TIME (NONE)
g_pszItemDefaults[13] = WIA_IPA_ITEM_TIME_STR;
g_piItemDefaults [13] = WIA_IPA_ITEM_TIME;
g_pvItemDefaults [13].cai.celems = MyNumberOfElements;
g_pvItemDefaults [13].cai.pelems = PointerToMyArray;
g_pvItemDefaults [13].vt = VT_VECTOR|VT_UI2; // MyArray is an array of DWORD values
g_psItemDefaults [13].ulKind = PRSPEC_PROPID;
g_psItemDefaults [13].propid = g_piItemDefaults [13];
g_wpiItemDefaults[13].lAccessFlags = WIA_PROP_READ|WIA_PROP_NONE;
g_wpiItemDefaults[13].vt = g_pvItemDefaults [13].vt;
런타임에 wiasWriteMultiple 을 사용하여 값을 변경하면 다음 예제와 같이 표시될 수 있습니다.
PROPVARIANT propVar;
PROPSPEC propSpec;
PropVariantInit(&propVar);
propVar.vt = VT_VECTOR | VT_UI2;
propVar.caui.cElems = sizeof(SYSTEMTIME) / sizeof(WORD);
propVar.caui.pElems = (WORD *) &CurrentTimeStruct;
propSpec.ulKind = PRSPEC_PROPID;
propSpec.propid = WIA_IPA_ITEM_TIME;
hr = wiasWriteMultiple(pWiasContext, 1, &propSpec, &propVar);
WIA는 COM PROPVARIANT 형식 VARIANT를 사용하므로 기본값은 VT_VECTOR VT_ARRAY 않습니다(지원됨).
요구 사항
요구 사항 | 값 |
---|---|
헤더 | wiamindr_lh.h(Wiamindr.h 포함) |