ホーム › Devices.WebServicesOnDevices › WSD_THIS_MODEL_METADATA
WSD_THIS_MODEL_METADATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Manufacturer | WSD_LOCALIZED_STRING_LIST* | 8/4 | +0 | +0 | 製造元名(多言語文字列リスト)。 |
| ManufacturerUrl | LPWSTR | 8/4 | +8 | +4 | 製造元のURL文字列。 |
| ModelName | WSD_LOCALIZED_STRING_LIST* | 8/4 | +16 | +8 | モデル名(多言語文字列リスト)。 |
| ModelNumber | LPWSTR | 8/4 | +24 | +12 | モデル番号文字列。 |
| ModelUrl | LPWSTR | 8/4 | +32 | +16 | モデルのURL文字列。 |
| PresentationUrl | LPWSTR | 8/4 | +40 | +20 | デバイスのプレゼンテーション(管理)URL文字列。 |
| Any | WSDXML_ELEMENT* | 8/4 | +48 | +24 | 拡張用の任意XML要素へのポインタ。 |
各言語での定義
#include <windows.h>
// WSD_THIS_MODEL_METADATA (x64 56 / x86 28 バイト)
typedef struct WSD_THIS_MODEL_METADATA {
WSD_LOCALIZED_STRING_LIST* Manufacturer;
LPWSTR ManufacturerUrl;
WSD_LOCALIZED_STRING_LIST* ModelName;
LPWSTR ModelNumber;
LPWSTR ModelUrl;
LPWSTR PresentationUrl;
WSDXML_ELEMENT* Any;
} WSD_THIS_MODEL_METADATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WSD_THIS_MODEL_METADATA
{
public IntPtr Manufacturer;
public IntPtr ManufacturerUrl;
public IntPtr ModelName;
public IntPtr ModelNumber;
public IntPtr ModelUrl;
public IntPtr PresentationUrl;
public IntPtr Any;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WSD_THIS_MODEL_METADATA
Public Manufacturer As IntPtr
Public ManufacturerUrl As IntPtr
Public ModelName As IntPtr
Public ModelNumber As IntPtr
Public ModelUrl As IntPtr
Public PresentationUrl As IntPtr
Public Any As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class WSD_THIS_MODEL_METADATA(ctypes.Structure):
_fields_ = [
("Manufacturer", ctypes.c_void_p),
("ManufacturerUrl", ctypes.c_void_p),
("ModelName", ctypes.c_void_p),
("ModelNumber", ctypes.c_void_p),
("ModelUrl", ctypes.c_void_p),
("PresentationUrl", ctypes.c_void_p),
("Any", ctypes.c_void_p),
]#[repr(C)]
pub struct WSD_THIS_MODEL_METADATA {
pub Manufacturer: *mut core::ffi::c_void,
pub ManufacturerUrl: *mut core::ffi::c_void,
pub ModelName: *mut core::ffi::c_void,
pub ModelNumber: *mut core::ffi::c_void,
pub ModelUrl: *mut core::ffi::c_void,
pub PresentationUrl: *mut core::ffi::c_void,
pub Any: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type WSD_THIS_MODEL_METADATA struct {
Manufacturer uintptr
ManufacturerUrl uintptr
ModelName uintptr
ModelNumber uintptr
ModelUrl uintptr
PresentationUrl uintptr
Any uintptr
}type
WSD_THIS_MODEL_METADATA = record
Manufacturer: Pointer;
ManufacturerUrl: Pointer;
ModelName: Pointer;
ModelNumber: Pointer;
ModelUrl: Pointer;
PresentationUrl: Pointer;
Any: Pointer;
end;const WSD_THIS_MODEL_METADATA = extern struct {
Manufacturer: ?*anyopaque,
ManufacturerUrl: ?*anyopaque,
ModelName: ?*anyopaque,
ModelNumber: ?*anyopaque,
ModelUrl: ?*anyopaque,
PresentationUrl: ?*anyopaque,
Any: ?*anyopaque,
};type
WSD_THIS_MODEL_METADATA {.bycopy.} = object
Manufacturer: pointer
ManufacturerUrl: pointer
ModelName: pointer
ModelNumber: pointer
ModelUrl: pointer
PresentationUrl: pointer
Any: pointerstruct WSD_THIS_MODEL_METADATA
{
void* Manufacturer;
void* ManufacturerUrl;
void* ModelName;
void* ModelNumber;
void* ModelUrl;
void* PresentationUrl;
void* Any;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WSD_THIS_MODEL_METADATA サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; Manufacturer : WSD_LOCALIZED_STRING_LIST* (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; ManufacturerUrl : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ModelName : WSD_LOCALIZED_STRING_LIST* (+8, 4byte) varptr(st)+8 を基点に操作(4byte:入れ子/配列)
; ModelNumber : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; ModelUrl : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; PresentationUrl : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Any : WSDXML_ELEMENT* (+24, 4byte) varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WSD_THIS_MODEL_METADATA サイズ: 56 バイト(x64)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; Manufacturer : WSD_LOCALIZED_STRING_LIST* (+0, 8byte) varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; ManufacturerUrl : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; ModelName : WSD_LOCALIZED_STRING_LIST* (+16, 8byte) varptr(st)+16 を基点に操作(8byte:入れ子/配列)
; ModelNumber : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ModelUrl : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; PresentationUrl : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; Any : WSDXML_ELEMENT* (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WSD_THIS_MODEL_METADATA
#field intptr Manufacturer
#field intptr ManufacturerUrl
#field intptr ModelName
#field intptr ModelNumber
#field intptr ModelUrl
#field intptr PresentationUrl
#field intptr Any
#endstruct
stdim st, WSD_THIS_MODEL_METADATA ; NSTRUCT 変数を確保