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 포함)

추가 정보

wiasSetItemPropAttribs