Win32 API 日本語リファレンス
ホームNetworkManagement.NetworkDiagnosticsFramework › RepairInfo

RepairInfo

構造体
サイズx64: 112 バイト / x86: 72 バイト

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

フィールド

フィールドサイズx64x86説明
guidGUID16+0+0この修復を一意に識別する GUID です。
pwszClassNameLPWSTR8/4+16+16ヘルパークラス名をユーザーにわかりやすい形式で格納した、null 終端文字列へのポインターです。
pwszDescriptionLPWSTR8/4+24+20修復内容をユーザーにわかりやすい形式で説明する、null 終端文字列へのポインターです。
sidTypeDWORD4+32+24修復に特定のユーザーコンテキストまたは特権が必要な場合に指定する、WELL_KNOWN_SID_TYPE のいずれかの値です。
costINT4+36+28修復の実行に必要な秒数です。
flagsDWORD4+40+32

修復に関する追加情報です。

意味
RF_WORKAROUND
その修復が問題に対する回避策であることを示します。たとえば、ネットワークインターフェイスをリセットすると断続的な問題が解決する場合がありますが、これは特定の問題に直接対処するものではないため、回避策と見なされます。NDF は、回避策よりも先に回避策以外の修復をユーザーに表示します。
RF_USER_ACTION
その修復が、NDF の外部で手動の操作を実行するようユーザーに求めることを示します。
RF_USER_CONFIRMATION
その修復を自動的に実行してはならないことを示します。代わりに、その修復を選択するようユーザーに求めます。
RF_INFORMATION_ONLY
その修復が、ユーザーが実際に行動できる情報で構成されていることを示します。情報提供のみの修復では、修復セッションおよび検証セッションは行われません。
RF_VALIDATE_HELPTOPIC
その修復が、ユーザーへの情報とヘルプトピックの両方を提供することを示します。検証できない RF_INFORMATION_ONLY の修復とは異なり、この修復は診断セッション内で実行および検証できます。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
RF_REPRO
その修復が、問題を再現するようユーザーに求めることを示します。同時に、ヘルパークラスは障害の検出に役立つ、より詳細なログ記録やその他のバックグラウンド機構を有効にしている場合があります。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
RF_CONTACT_ADMIN
その修復が、問題を解決するためにネットワーク管理者に連絡するようユーザーに求めることを示します。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
RF_RESERVED
システムでの使用のために予約済みです。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
RF_RESERVED_CA
システムでの使用のために予約済みです。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
RF_RESERVED_LNI
システムでの使用のために予約済みです。
注意 Windows 7、Windows Server 2008 R2 以降でのみ使用できます。
scopeREPAIR_SCOPE4+44+36将来の使用のために予約済みです。
riskREPAIR_RISK4+48+40将来の使用のために予約済みです。
UiInfoUiInfo48/24+56+44UiInfo 構造体です。
rootCauseIndexINT4+104+68対応する根本原因への索引を示す(符号付き整数)。

公式ドキュメント

RepairInfo 構造体には、特定の修復オプションに必要なデータが格納されます。

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

各言語での定義

#include <windows.h>

// UiInfo  (x64 48 / x86 24 バイト)
typedef struct UiInfo {
    UI_INFO_TYPE type;
    _Anonymous_e__Union Anonymous;
} UiInfo;

// RepairInfo  (x64 112 / x86 72 バイト)
typedef struct RepairInfo {
    GUID guid;
    LPWSTR pwszClassName;
    LPWSTR pwszDescription;
    DWORD sidType;
    INT cost;
    DWORD flags;
    REPAIR_SCOPE scope;
    REPAIR_RISK risk;
    UiInfo UiInfo;
    INT rootCauseIndex;
} RepairInfo;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UiInfo
{
    public int type;
    public _Anonymous_e__Union Anonymous;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RepairInfo
{
    public Guid guid;
    public IntPtr pwszClassName;
    public IntPtr pwszDescription;
    public uint sidType;
    public int cost;
    public uint flags;
    public int scope;
    public int risk;
    public UiInfo UiInfo;
    public int rootCauseIndex;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure UiInfo
    Public type As Integer
    Public Anonymous As _Anonymous_e__Union
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RepairInfo
    Public guid As Guid
    Public pwszClassName As IntPtr
    Public pwszDescription As IntPtr
    Public sidType As UInteger
    Public cost As Integer
    Public flags As UInteger
    Public scope As Integer
    Public risk As Integer
    Public UiInfo As UiInfo
    Public rootCauseIndex As Integer
End Structure
import ctypes
from ctypes import wintypes

class UiInfo(ctypes.Structure):
    _fields_ = [
        ("type", ctypes.c_int),
        ("Anonymous", _Anonymous_e__Union),
    ]

class RepairInfo(ctypes.Structure):
    _fields_ = [
        ("guid", GUID),
        ("pwszClassName", ctypes.c_void_p),
        ("pwszDescription", ctypes.c_void_p),
        ("sidType", wintypes.DWORD),
        ("cost", ctypes.c_int),
        ("flags", wintypes.DWORD),
        ("scope", ctypes.c_int),
        ("risk", ctypes.c_int),
        ("UiInfo", UiInfo),
        ("rootCauseIndex", ctypes.c_int),
    ]
#[repr(C)]
pub struct UiInfo {
    pub type: i32,
    pub Anonymous: _Anonymous_e__Union,
}

#[repr(C)]
pub struct RepairInfo {
    pub guid: GUID,
    pub pwszClassName: *mut core::ffi::c_void,
    pub pwszDescription: *mut core::ffi::c_void,
    pub sidType: u32,
    pub cost: i32,
    pub flags: u32,
    pub scope: i32,
    pub risk: i32,
    pub UiInfo: UiInfo,
    pub rootCauseIndex: i32,
}
import "golang.org/x/sys/windows"

type UiInfo struct {
	type int32
	Anonymous _Anonymous_e__Union
}

type RepairInfo struct {
	guid windows.GUID
	pwszClassName uintptr
	pwszDescription uintptr
	sidType uint32
	cost int32
	flags uint32
	scope int32
	risk int32
	UiInfo UiInfo
	rootCauseIndex int32
}
type
  UiInfo = record
    type: Integer;
    Anonymous: _Anonymous_e__Union;
  end;

  RepairInfo = record
    guid: TGUID;
    pwszClassName: Pointer;
    pwszDescription: Pointer;
    sidType: DWORD;
    cost: Integer;
    flags: DWORD;
    scope: Integer;
    risk: Integer;
    UiInfo: UiInfo;
    rootCauseIndex: Integer;
  end;
const UiInfo = extern struct {
    type: i32,
    Anonymous: _Anonymous_e__Union,
};

const RepairInfo = extern struct {
    guid: GUID,
    pwszClassName: ?*anyopaque,
    pwszDescription: ?*anyopaque,
    sidType: u32,
    cost: i32,
    flags: u32,
    scope: i32,
    risk: i32,
    UiInfo: UiInfo,
    rootCauseIndex: i32,
};
type
  UiInfo {.bycopy.} = object
    type: int32
    Anonymous: _Anonymous_e__Union

  RepairInfo {.bycopy.} = object
    guid: GUID
    pwszClassName: pointer
    pwszDescription: pointer
    sidType: uint32
    cost: int32
    flags: uint32
    scope: int32
    risk: int32
    UiInfo: UiInfo
    rootCauseIndex: int32
struct UiInfo
{
    int type;
    _Anonymous_e__Union Anonymous;
}

struct RepairInfo
{
    GUID guid;
    void* pwszClassName;
    void* pwszDescription;
    uint sidType;
    int cost;
    uint flags;
    int scope;
    int risk;
    UiInfo UiInfo;
    int rootCauseIndex;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RepairInfo サイズ: 72 バイト(x86)
dim st, 18    ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; guid : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; pwszClassName : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pwszDescription : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; sidType : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; cost : INT (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; flags : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; scope : REPAIR_SCOPE (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; risk : REPAIR_RISK (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; UiInfo : UiInfo (+44, 24byte)  varptr(st)+44 を基点に操作(24byte:入れ子/配列)
; rootCauseIndex : INT (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RepairInfo サイズ: 112 バイト(x64)
dim st, 28    ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; guid : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; pwszClassName : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pwszDescription : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; sidType : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; cost : INT (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; flags : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; scope : REPAIR_SCOPE (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; risk : REPAIR_RISK (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; UiInfo : UiInfo (+56, 48byte)  varptr(st)+56 を基点に操作(48byte:入れ子/配列)
; rootCauseIndex : INT (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global UiInfo
    #field int type
    #field byte Anonymous 40
#endstruct

#defstruct global RepairInfo
    #field GUID guid
    #field intptr pwszClassName
    #field intptr pwszDescription
    #field int sidType
    #field int cost
    #field int flags
    #field int scope
    #field int risk
    #field UiInfo UiInfo
    #field int rootCauseIndex
#endstruct

stdim st, RepairInfo        ; NSTRUCT 変数を確保
st->sidType = 100
mes "sidType=" + st->sidType