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
プロパティの有効な値が浮動小数点値の範囲で指定され、プロパティ型が 浮動小数点 または 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 のどのメンバーにアクセスできるかを判断する必要があります。
たとえば、long 型の読み取り/書き込みプロパティの場合、有効な値は -128 ~ 127 の範囲の整数で、名目値が 0 の 場合、lAccessFlags は WIA_PROP_RW |WIA_PROP_RANGE、vt は VT_I4 に設定されます。 Range.Min は -128 に、Range.Max は 127 に、Range.Inc は 1 に設定されます。 Range.Nom は 0 に設定されます。
有効な値が 3 つの GUID 値のリストによって定義されている別のプロパティの場合、lAccessFlags はWIA_PROP_LIST ビットが設定され、vt VT_CLSIDに設定されます。 ListGuid.cNumList は 3 に設定され、3 つの GUID は ListGuid.pList [0]、ListGuid.pList[1]、および ListGuid.pList[2]されます。
有効な値が0x01、0x02、0x04、および0x08のビットセットによって定義されているプロパティは、lAccessFlagsでWIA_PROP_FLAG ビットを設定し、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 を する