Win32 API 日本語リファレンス
ホームDevices.DeviceAndDriverInstallation › FILEPATHS_SIGNERINFO_W

FILEPATHS_SIGNERINFO_W

構造体
サイズx64: 48 バイト / x86: 28 バイトパッキング1

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
TargetLPWSTR8/4+0+0対象(コピー先)ファイルのフルパス(Unicode)。
SourceLPWSTR8/4+8+4コピー元ファイルのフルパス(Unicode)。NULLの場合がある。
Win32ErrorDWORD4+16+8操作の結果を示すWin32エラーコード。成功時は0。
FlagsDWORD4+20+12ファイル操作の状態や属性を示すフラグ群。
DigitalSignerLPWSTR8/4+24+16ファイルのデジタル署名者名(Unicode)。未署名ならNULL可。
VersionLPWSTR8/4+32+20署名のバージョン文字列(Unicode)。
CatalogFileLPWSTR8/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 Structure
import 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: pointer
align(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