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ターゲットファイルへのパス。
SourceLPWSTR8/4+8+4ソースファイルへのパス。このメンバーは、 FILEPATHS 構造体をファイルの削除操作で使用する場合には使用されません。
Win32ErrorDWORD4+16+8エラーが発生した場合、このメンバーは システムエラーコード です。エラーが発生していない場合は NO_ERROR です。
FlagsDWORD4+20+12

FILEPATHS_SIGNERINFO 構造体とともに送信される通知に応じて異なる追加情報です。

SPFILENOTIFY_COPYERROR 通知の場合、Flags はダイアログボックスの動作を指定し、次のいずれかの値を取ります。

意味
SP_COPY_NOBROWSE
ユーザーに参照するオプションを提供しません。
SP_COPY_NOSKIP
ユーザーにファイルをスキップするオプションを提供しません。
SP_COPY_WARNIFSKIP
ファイルをスキップするとインストールに影響する可能性があることをユーザーに通知します。

SPFILENOTIFY_FILEOPDELAYED 通知の場合、Flags は遅延されたファイル操作の種類を指定し、次のいずれかの値を取ります。

意味
FILEOP_COPY
ファイルのコピー操作が遅延されました。
FILEOP_DELETE
ファイルの削除操作が遅延されました。
DigitalSignerLPWSTR8/4+24+16ファイルのデジタル署名者。
VersionLPWSTR8/4+32+20ファイルのバージョン。
CatalogFileLPWSTR8/4+40+24カタログファイル。

公式ドキュメント

FILEPATHS_SINGNERINFO 構造体は、ソースおよびターゲットのパス情報と、ファイルの署名情報を格納します。セットアップ関数は、コールバックルーチンに送信されるいくつかの通知のパラメーターとして FILEPATHS_SIGNERINFO を渡します。詳細については、 Notifications を参照してください。

解説(Remarks)

メモ

setupapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして、FILEPATHS_SIGNERINFO を定義します。エンコーディング中立のエイリアスを、エンコーディング中立ではないコードと混在させて使用すると、不一致が生じ、コンパイルエラーや実行時エラーの原因となる可能性があります。詳細については、関数プロトタイプの規則 を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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