ホーム › Graphics.Printing › DRIVER_INFO_8W
DRIVER_INFO_8W
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cVersion | DWORD | 4 | +0 | +0 | ドライバのバージョン番号。 |
| pName | LPWSTR | 8/4 | +8 | +4 | プリンタドライバ名(Unicode)へのポインタ。 |
| pEnvironment | LPWSTR | 8/4 | +16 | +8 | ドライバの対象環境名(Unicode)。 |
| pDriverPath | LPWSTR | 8/4 | +24 | +12 | ドライバ本体ファイルのパス(Unicode)へのポインタ。 |
| pDataFile | LPWSTR | 8/4 | +32 | +16 | ドライバデータファイルのパス(Unicode)へのポインタ。 |
| pConfigFile | LPWSTR | 8/4 | +40 | +20 | 構成用DLLのパス(Unicode)へのポインタ。 |
| pHelpFile | LPWSTR | 8/4 | +48 | +24 | ヘルプファイルのパス(Unicode)へのポインタ。NULL可。 |
| pDependentFiles | LPWSTR | 8/4 | +56 | +28 | 依存ファイルのパスをNULL区切りで連結した文字列(Unicode)へのポインタ。 |
| pMonitorName | LPWSTR | 8/4 | +64 | +32 | 言語モニタ名(Unicode)へのポインタ。NULL可。 |
| pDefaultDataType | LPWSTR | 8/4 | +72 | +36 | 既定の印刷データ型(Unicode)へのポインタ。NULL可。 |
| pszzPreviousNames | LPWSTR | 8/4 | +80 | +40 | このドライバの旧名称をNULL区切りで連結した文字列(Unicode)へのポインタ。 |
| ftDriverDate | FILETIME | 8 | +88 | +44 | ドライバの日付を示すFILETIME。 |
| dwlDriverVersion | ULONGLONG | 8 | +96 | +56 | ドライバのバージョンを示す64ビット値。 |
| pszMfgName | LPWSTR | 8/4 | +104 | +64 | ドライバ製造元名(Unicode)へのポインタ。 |
| pszOEMUrl | LPWSTR | 8/4 | +112 | +68 | 製造元のWeb URL(Unicode)へのポインタ。 |
| pszHardwareID | LPWSTR | 8/4 | +120 | +72 | ドライバのハードウェアID(Unicode)へのポインタ。 |
| pszProvider | LPWSTR | 8/4 | +128 | +76 | ドライバの提供元名(Unicode)へのポインタ。 |
| pszPrintProcessor | LPWSTR | 8/4 | +136 | +80 | ドライバが使用する印刷プロセッサ名(Unicode)へのポインタ。 |
| pszVendorSetup | LPWSTR | 8/4 | +144 | +84 | ベンダ提供のセットアップ情報(Unicode)へのポインタ。 |
| pszzColorProfiles | LPWSTR | 8/4 | +152 | +88 | 色プロファイルのパスをNULL区切りで連結した文字列(Unicode)へのポインタ。 |
| pszInfPath | LPWSTR | 8/4 | +160 | +92 | ドライバのINFファイルパス(Unicode)へのポインタ。 |
| dwPrinterDriverAttributes | DWORD | 4 | +168 | +96 | プリンタドライバの属性を示すビットフラグ。 |
| pszzCoreDriverDependencies | LPWSTR | 8/4 | +176 | +100 | コアドライバ依存関係をNULL区切りで連結した文字列(Unicode)へのポインタ。 |
| ftMinInboxDriverVerDate | FILETIME | 8 | +184 | +104 | 対応する最小インボックスドライバの日付を示すFILETIME。 |
| dwlMinInboxDriverVerVersion | ULONGLONG | 8 | +192 | +112 | 対応する最小インボックスドライバのバージョンを示す64ビット値。 |
各言語での定義
#include <windows.h>
// FILETIME (x64 8 / x86 8 バイト)
typedef struct FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// DRIVER_INFO_8W (x64 200 / x86 120 バイト)
typedef struct DRIVER_INFO_8W {
DWORD cVersion;
LPWSTR pName;
LPWSTR pEnvironment;
LPWSTR pDriverPath;
LPWSTR pDataFile;
LPWSTR pConfigFile;
LPWSTR pHelpFile;
LPWSTR pDependentFiles;
LPWSTR pMonitorName;
LPWSTR pDefaultDataType;
LPWSTR pszzPreviousNames;
FILETIME ftDriverDate;
ULONGLONG dwlDriverVersion;
LPWSTR pszMfgName;
LPWSTR pszOEMUrl;
LPWSTR pszHardwareID;
LPWSTR pszProvider;
LPWSTR pszPrintProcessor;
LPWSTR pszVendorSetup;
LPWSTR pszzColorProfiles;
LPWSTR pszInfPath;
DWORD dwPrinterDriverAttributes;
LPWSTR pszzCoreDriverDependencies;
FILETIME ftMinInboxDriverVerDate;
ULONGLONG dwlMinInboxDriverVerVersion;
} DRIVER_INFO_8W;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public uint dwLowDateTime;
public uint dwHighDateTime;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DRIVER_INFO_8W
{
public uint cVersion;
public IntPtr pName;
public IntPtr pEnvironment;
public IntPtr pDriverPath;
public IntPtr pDataFile;
public IntPtr pConfigFile;
public IntPtr pHelpFile;
public IntPtr pDependentFiles;
public IntPtr pMonitorName;
public IntPtr pDefaultDataType;
public IntPtr pszzPreviousNames;
public FILETIME ftDriverDate;
public ulong dwlDriverVersion;
public IntPtr pszMfgName;
public IntPtr pszOEMUrl;
public IntPtr pszHardwareID;
public IntPtr pszProvider;
public IntPtr pszPrintProcessor;
public IntPtr pszVendorSetup;
public IntPtr pszzColorProfiles;
public IntPtr pszInfPath;
public uint dwPrinterDriverAttributes;
public IntPtr pszzCoreDriverDependencies;
public FILETIME ftMinInboxDriverVerDate;
public ulong dwlMinInboxDriverVerVersion;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DRIVER_INFO_8W
Public cVersion As UInteger
Public pName As IntPtr
Public pEnvironment As IntPtr
Public pDriverPath As IntPtr
Public pDataFile As IntPtr
Public pConfigFile As IntPtr
Public pHelpFile As IntPtr
Public pDependentFiles As IntPtr
Public pMonitorName As IntPtr
Public pDefaultDataType As IntPtr
Public pszzPreviousNames As IntPtr
Public ftDriverDate As FILETIME
Public dwlDriverVersion As ULong
Public pszMfgName As IntPtr
Public pszOEMUrl As IntPtr
Public pszHardwareID As IntPtr
Public pszProvider As IntPtr
Public pszPrintProcessor As IntPtr
Public pszVendorSetup As IntPtr
Public pszzColorProfiles As IntPtr
Public pszInfPath As IntPtr
Public dwPrinterDriverAttributes As UInteger
Public pszzCoreDriverDependencies As IntPtr
Public ftMinInboxDriverVerDate As FILETIME
Public dwlMinInboxDriverVerVersion As ULong
End Structureimport ctypes
from ctypes import wintypes
class FILETIME(ctypes.Structure):
_fields_ = [
("dwLowDateTime", wintypes.DWORD),
("dwHighDateTime", wintypes.DWORD),
]
class DRIVER_INFO_8W(ctypes.Structure):
_fields_ = [
("cVersion", wintypes.DWORD),
("pName", ctypes.c_void_p),
("pEnvironment", ctypes.c_void_p),
("pDriverPath", ctypes.c_void_p),
("pDataFile", ctypes.c_void_p),
("pConfigFile", ctypes.c_void_p),
("pHelpFile", ctypes.c_void_p),
("pDependentFiles", ctypes.c_void_p),
("pMonitorName", ctypes.c_void_p),
("pDefaultDataType", ctypes.c_void_p),
("pszzPreviousNames", ctypes.c_void_p),
("ftDriverDate", FILETIME),
("dwlDriverVersion", ctypes.c_ulonglong),
("pszMfgName", ctypes.c_void_p),
("pszOEMUrl", ctypes.c_void_p),
("pszHardwareID", ctypes.c_void_p),
("pszProvider", ctypes.c_void_p),
("pszPrintProcessor", ctypes.c_void_p),
("pszVendorSetup", ctypes.c_void_p),
("pszzColorProfiles", ctypes.c_void_p),
("pszInfPath", ctypes.c_void_p),
("dwPrinterDriverAttributes", wintypes.DWORD),
("pszzCoreDriverDependencies", ctypes.c_void_p),
("ftMinInboxDriverVerDate", FILETIME),
("dwlMinInboxDriverVerVersion", ctypes.c_ulonglong),
]#[repr(C)]
pub struct FILETIME {
pub dwLowDateTime: u32,
pub dwHighDateTime: u32,
}
#[repr(C)]
pub struct DRIVER_INFO_8W {
pub cVersion: u32,
pub pName: *mut core::ffi::c_void,
pub pEnvironment: *mut core::ffi::c_void,
pub pDriverPath: *mut core::ffi::c_void,
pub pDataFile: *mut core::ffi::c_void,
pub pConfigFile: *mut core::ffi::c_void,
pub pHelpFile: *mut core::ffi::c_void,
pub pDependentFiles: *mut core::ffi::c_void,
pub pMonitorName: *mut core::ffi::c_void,
pub pDefaultDataType: *mut core::ffi::c_void,
pub pszzPreviousNames: *mut core::ffi::c_void,
pub ftDriverDate: FILETIME,
pub dwlDriverVersion: u64,
pub pszMfgName: *mut core::ffi::c_void,
pub pszOEMUrl: *mut core::ffi::c_void,
pub pszHardwareID: *mut core::ffi::c_void,
pub pszProvider: *mut core::ffi::c_void,
pub pszPrintProcessor: *mut core::ffi::c_void,
pub pszVendorSetup: *mut core::ffi::c_void,
pub pszzColorProfiles: *mut core::ffi::c_void,
pub pszInfPath: *mut core::ffi::c_void,
pub dwPrinterDriverAttributes: u32,
pub pszzCoreDriverDependencies: *mut core::ffi::c_void,
pub ftMinInboxDriverVerDate: FILETIME,
pub dwlMinInboxDriverVerVersion: u64,
}import "golang.org/x/sys/windows"
type FILETIME struct {
dwLowDateTime uint32
dwHighDateTime uint32
}
type DRIVER_INFO_8W struct {
cVersion uint32
pName uintptr
pEnvironment uintptr
pDriverPath uintptr
pDataFile uintptr
pConfigFile uintptr
pHelpFile uintptr
pDependentFiles uintptr
pMonitorName uintptr
pDefaultDataType uintptr
pszzPreviousNames uintptr
ftDriverDate FILETIME
dwlDriverVersion uint64
pszMfgName uintptr
pszOEMUrl uintptr
pszHardwareID uintptr
pszProvider uintptr
pszPrintProcessor uintptr
pszVendorSetup uintptr
pszzColorProfiles uintptr
pszInfPath uintptr
dwPrinterDriverAttributes uint32
pszzCoreDriverDependencies uintptr
ftMinInboxDriverVerDate FILETIME
dwlMinInboxDriverVerVersion uint64
}type
FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
DRIVER_INFO_8W = record
cVersion: DWORD;
pName: Pointer;
pEnvironment: Pointer;
pDriverPath: Pointer;
pDataFile: Pointer;
pConfigFile: Pointer;
pHelpFile: Pointer;
pDependentFiles: Pointer;
pMonitorName: Pointer;
pDefaultDataType: Pointer;
pszzPreviousNames: Pointer;
ftDriverDate: FILETIME;
dwlDriverVersion: UInt64;
pszMfgName: Pointer;
pszOEMUrl: Pointer;
pszHardwareID: Pointer;
pszProvider: Pointer;
pszPrintProcessor: Pointer;
pszVendorSetup: Pointer;
pszzColorProfiles: Pointer;
pszInfPath: Pointer;
dwPrinterDriverAttributes: DWORD;
pszzCoreDriverDependencies: Pointer;
ftMinInboxDriverVerDate: FILETIME;
dwlMinInboxDriverVerVersion: UInt64;
end;const FILETIME = extern struct {
dwLowDateTime: u32,
dwHighDateTime: u32,
};
const DRIVER_INFO_8W = extern struct {
cVersion: u32,
pName: ?*anyopaque,
pEnvironment: ?*anyopaque,
pDriverPath: ?*anyopaque,
pDataFile: ?*anyopaque,
pConfigFile: ?*anyopaque,
pHelpFile: ?*anyopaque,
pDependentFiles: ?*anyopaque,
pMonitorName: ?*anyopaque,
pDefaultDataType: ?*anyopaque,
pszzPreviousNames: ?*anyopaque,
ftDriverDate: FILETIME,
dwlDriverVersion: u64,
pszMfgName: ?*anyopaque,
pszOEMUrl: ?*anyopaque,
pszHardwareID: ?*anyopaque,
pszProvider: ?*anyopaque,
pszPrintProcessor: ?*anyopaque,
pszVendorSetup: ?*anyopaque,
pszzColorProfiles: ?*anyopaque,
pszInfPath: ?*anyopaque,
dwPrinterDriverAttributes: u32,
pszzCoreDriverDependencies: ?*anyopaque,
ftMinInboxDriverVerDate: FILETIME,
dwlMinInboxDriverVerVersion: u64,
};type
FILETIME {.bycopy.} = object
dwLowDateTime: uint32
dwHighDateTime: uint32
DRIVER_INFO_8W {.bycopy.} = object
cVersion: uint32
pName: pointer
pEnvironment: pointer
pDriverPath: pointer
pDataFile: pointer
pConfigFile: pointer
pHelpFile: pointer
pDependentFiles: pointer
pMonitorName: pointer
pDefaultDataType: pointer
pszzPreviousNames: pointer
ftDriverDate: FILETIME
dwlDriverVersion: uint64
pszMfgName: pointer
pszOEMUrl: pointer
pszHardwareID: pointer
pszProvider: pointer
pszPrintProcessor: pointer
pszVendorSetup: pointer
pszzColorProfiles: pointer
pszInfPath: pointer
dwPrinterDriverAttributes: uint32
pszzCoreDriverDependencies: pointer
ftMinInboxDriverVerDate: FILETIME
dwlMinInboxDriverVerVersion: uint64struct FILETIME
{
uint dwLowDateTime;
uint dwHighDateTime;
}
struct DRIVER_INFO_8W
{
uint cVersion;
void* pName;
void* pEnvironment;
void* pDriverPath;
void* pDataFile;
void* pConfigFile;
void* pHelpFile;
void* pDependentFiles;
void* pMonitorName;
void* pDefaultDataType;
void* pszzPreviousNames;
FILETIME ftDriverDate;
ulong dwlDriverVersion;
void* pszMfgName;
void* pszOEMUrl;
void* pszHardwareID;
void* pszProvider;
void* pszPrintProcessor;
void* pszVendorSetup;
void* pszzColorProfiles;
void* pszInfPath;
uint dwPrinterDriverAttributes;
void* pszzCoreDriverDependencies;
FILETIME ftMinInboxDriverVerDate;
ulong dwlMinInboxDriverVerVersion;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DRIVER_INFO_8W サイズ: 120 バイト(x86)
dim st, 30 ; 4byte整数×30(構造体サイズ 120 / 4 切り上げ)
; cVersion : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pName : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pEnvironment : LPWSTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pDriverPath : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pDataFile : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pConfigFile : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pHelpFile : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; pDependentFiles : LPWSTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pMonitorName : LPWSTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pDefaultDataType : LPWSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pszzPreviousNames : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ftDriverDate : FILETIME (+44, 8byte) varptr(st)+44 を基点に操作(8byte:入れ子/配列)
; dwlDriverVersion : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pszMfgName : LPWSTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; pszOEMUrl : LPWSTR (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; pszHardwareID : LPWSTR (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; pszProvider : LPWSTR (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; pszPrintProcessor : LPWSTR (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; pszVendorSetup : LPWSTR (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; pszzColorProfiles : LPWSTR (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; pszInfPath : LPWSTR (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; dwPrinterDriverAttributes : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; pszzCoreDriverDependencies : LPWSTR (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ftMinInboxDriverVerDate : FILETIME (+104, 8byte) varptr(st)+104 を基点に操作(8byte:入れ子/配列)
; dwlMinInboxDriverVerVersion : ULONGLONG (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DRIVER_INFO_8W サイズ: 200 バイト(x64)
dim st, 50 ; 4byte整数×50(構造体サイズ 200 / 4 切り上げ)
; cVersion : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pName : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pEnvironment : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pDriverPath : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pDataFile : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pConfigFile : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; pHelpFile : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pDependentFiles : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pMonitorName : LPWSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pDefaultDataType : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; pszzPreviousNames : LPWSTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ftDriverDate : FILETIME (+88, 8byte) varptr(st)+88 を基点に操作(8byte:入れ子/配列)
; dwlDriverVersion : ULONGLONG (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; pszMfgName : LPWSTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; pszOEMUrl : LPWSTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; pszHardwareID : LPWSTR (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; pszProvider : LPWSTR (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; pszPrintProcessor : LPWSTR (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; pszVendorSetup : LPWSTR (+144, 8byte) qpoke st,144,値 / qpeek(st,144) ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; pszzColorProfiles : LPWSTR (+152, 8byte) qpoke st,152,値 / qpeek(st,152) ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; pszInfPath : LPWSTR (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; dwPrinterDriverAttributes : DWORD (+168, 4byte) st.42 = 値 / 値 = st.42 (lpoke/lpeek も可)
; pszzCoreDriverDependencies : LPWSTR (+176, 8byte) qpoke st,176,値 / qpeek(st,176) ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; ftMinInboxDriverVerDate : FILETIME (+184, 8byte) varptr(st)+184 を基点に操作(8byte:入れ子/配列)
; dwlMinInboxDriverVerVersion : ULONGLONG (+192, 8byte) qpoke st,192,値 / qpeek(st,192) ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
#field int dwLowDateTime
#field int dwHighDateTime
#endstruct
#defstruct global DRIVER_INFO_8W
#field int cVersion
#field intptr pName
#field intptr pEnvironment
#field intptr pDriverPath
#field intptr pDataFile
#field intptr pConfigFile
#field intptr pHelpFile
#field intptr pDependentFiles
#field intptr pMonitorName
#field intptr pDefaultDataType
#field intptr pszzPreviousNames
#field FILETIME ftDriverDate
#field int64 dwlDriverVersion
#field intptr pszMfgName
#field intptr pszOEMUrl
#field intptr pszHardwareID
#field intptr pszProvider
#field intptr pszPrintProcessor
#field intptr pszVendorSetup
#field intptr pszzColorProfiles
#field intptr pszInfPath
#field int dwPrinterDriverAttributes
#field intptr pszzCoreDriverDependencies
#field FILETIME ftMinInboxDriverVerDate
#field int64 dwlMinInboxDriverVerVersion
#endstruct
stdim st, DRIVER_INFO_8W ; NSTRUCT 変数を確保
st->cVersion = 100
mes "cVersion=" + st->cVersion