ホーム › Devices.DeviceAndDriverInstallation › FILEPATHS_SIGNERINFO_W
FILEPATHS_SIGNERINFO_W
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Target | LPWSTR | 8/4 | +0 | +0 | 対象(コピー先)ファイルのフルパス(Unicode)。 |
| Source | LPWSTR | 8/4 | +8 | +4 | コピー元ファイルのフルパス(Unicode)。NULLの場合がある。 |
| Win32Error | DWORD | 4 | +16 | +8 | 操作の結果を示すWin32エラーコード。成功時は0。 |
| Flags | DWORD | 4 | +20 | +12 | ファイル操作の状態や属性を示すフラグ群。 |
| DigitalSigner | LPWSTR | 8/4 | +24 | +16 | ファイルのデジタル署名者名(Unicode)。未署名ならNULL可。 |
| Version | LPWSTR | 8/4 | +32 | +20 | 署名のバージョン文字列(Unicode)。 |
| CatalogFile | LPWSTR | 8/4 | +40 | +24 | 署名を含むカタログファイル名(Unicode)。 |
各言語での定義
#include <windows.h>
// FILEPATHS_SIGNERINFO_W (x64 48 / x86 28 バイト)
#pragma pack(push, 1)
typedef struct FILEPATHS_SIGNERINFO_W {
LPWSTR Target;
LPWSTR Source;
DWORD Win32Error;
DWORD Flags;
LPWSTR DigitalSigner;
LPWSTR Version;
LPWSTR CatalogFile;
} FILEPATHS_SIGNERINFO_W;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct FILEPATHS_SIGNERINFO_W
{
public IntPtr Target;
public IntPtr Source;
public uint Win32Error;
public uint Flags;
public IntPtr DigitalSigner;
public IntPtr Version;
public IntPtr CatalogFile;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure FILEPATHS_SIGNERINFO_W
Public Target As IntPtr
Public Source As IntPtr
Public Win32Error As UInteger
Public Flags As UInteger
Public DigitalSigner As IntPtr
Public Version As IntPtr
Public CatalogFile As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class FILEPATHS_SIGNERINFO_W(ctypes.Structure):
_pack_ = 1
_fields_ = [
("Target", ctypes.c_void_p),
("Source", ctypes.c_void_p),
("Win32Error", wintypes.DWORD),
("Flags", wintypes.DWORD),
("DigitalSigner", ctypes.c_void_p),
("Version", ctypes.c_void_p),
("CatalogFile", ctypes.c_void_p),
]#[repr(C, packed(1))]
pub struct FILEPATHS_SIGNERINFO_W {
pub Target: *mut core::ffi::c_void,
pub Source: *mut core::ffi::c_void,
pub Win32Error: u32,
pub Flags: u32,
pub DigitalSigner: *mut core::ffi::c_void,
pub Version: *mut core::ffi::c_void,
pub CatalogFile: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type FILEPATHS_SIGNERINFO_W struct {
Target uintptr
Source uintptr
Win32Error uint32
Flags uint32
DigitalSigner uintptr
Version uintptr
CatalogFile uintptr
}type
FILEPATHS_SIGNERINFO_W = packed record
Target: Pointer;
Source: Pointer;
Win32Error: DWORD;
Flags: DWORD;
DigitalSigner: Pointer;
Version: Pointer;
CatalogFile: Pointer;
end;const FILEPATHS_SIGNERINFO_W = extern struct {
Target: ?*anyopaque,
Source: ?*anyopaque,
Win32Error: u32,
Flags: u32,
DigitalSigner: ?*anyopaque,
Version: ?*anyopaque,
CatalogFile: ?*anyopaque,
};type
FILEPATHS_SIGNERINFO_W {.packed.} = object
Target: pointer
Source: pointer
Win32Error: uint32
Flags: uint32
DigitalSigner: pointer
Version: pointer
CatalogFile: pointeralign(1)
struct FILEPATHS_SIGNERINFO_W
{
void* Target;
void* Source;
uint Win32Error;
uint Flags;
void* DigitalSigner;
void* Version;
void* CatalogFile;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; FILEPATHS_SIGNERINFO_W サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; Target : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Source : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Win32Error : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; Flags : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; DigitalSigner : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; Version : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; CatalogFile : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; FILEPATHS_SIGNERINFO_W サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; Target : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; Source : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; Win32Error : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; Flags : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; DigitalSigner : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; Version : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; CatalogFile : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global FILEPATHS_SIGNERINFO_W, pack=1
#field intptr Target
#field intptr Source
#field int Win32Error
#field int Flags
#field intptr DigitalSigner
#field intptr Version
#field intptr CatalogFile
#endstruct
stdim st, FILEPATHS_SIGNERINFO_W ; NSTRUCT 変数を確保
st->Win32Error = 100
mes "Win32Error=" + st->Win32Error