Win32 API 日本語リファレンス
ホームNetworking.Clustering › CLRES_CALLBACK_FUNCTION_TABLE

CLRES_CALLBACK_FUNCTION_TABLE

構造体
サイズx64: 136 バイト / x86: 68 バイト

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

フィールド

フィールドサイズx64x86説明
LogEventPLOG_EVENT_ROUTINE8/4+0+0イベントをログに記録するLogEventコールバックへの関数ポインターである。
SetResourceStatusExPSET_RESOURCE_STATUS_ROUTINE_EX8/4+8+4リソース状態を拡張形式で設定するSetResourceStatusExコールバックへの関数ポインターである。
SetResourceLockedModePSET_RESOURCE_LOCKED_MODE_ROUTINE8/4+16+8リソースのロックモードを設定するコールバックへの関数ポインターである。
SignalFailurePSIGNAL_FAILURE_ROUTINE8/4+24+12リソースの障害を通知するSignalFailureコールバックへの関数ポインターである。
SetResourceInMemoryNodeLocalPropertiesPSET_RESOURCE_INMEMORY_NODELOCAL_PROPERTIES_ROUTINE8/4+32+16ノードローカルのインメモリプロパティを設定するコールバックへの関数ポインターである。
EndControlCallPEND_CONTROL_CALL8/4+40+20リソース制御呼び出しを完了するEndControlCallコールバックへの関数ポインターである。
EndTypeControlCallPEND_TYPE_CONTROL_CALL8/4+48+24リソース種別制御呼び出しを完了するEndTypeControlCallコールバックへの関数ポインターである。
ExtendControlCallPEXTEND_RES_CONTROL_CALL8/4+56+28リソース制御呼び出しの時間を延長するコールバックへの関数ポインターである。
ExtendTypeControlCallPEXTEND_RES_TYPE_CONTROL_CALL8/4+64+32リソース種別制御呼び出しの時間を延長するコールバックへの関数ポインターである。
RaiseResTypeNotificationPRAISE_RES_TYPE_NOTIFICATION8/4+72+36リソース種別通知を発生させるコールバックへの関数ポインターである。
ChangeResourceProcessForDumpsPCHANGE_RESOURCE_PROCESS_FOR_DUMPS8/4+80+40ダンプ用にリソースプロセスを変更するコールバックへの関数ポインターである。
ChangeResTypeProcessForDumpsPCHANGE_RES_TYPE_PROCESS_FOR_DUMPS8/4+88+44ダンプ用にリソース種別プロセスを変更するコールバックへの関数ポインターである。
SetInternalStatePSET_INTERNAL_STATE8/4+96+48リソースの内部状態を設定するSetInternalStateコールバックへの関数ポインターである。
SetResourceLockedModeExPSET_RESOURCE_LOCKED_MODE_EX_ROUTINE8/4+104+52リソースのロックモードを拡張形式で設定するコールバックへの関数ポインターである。
RequestDumpPREQUEST_DUMP_ROUTINE8/4+112+56ダンプ取得を要求するRequestDumpコールバックへの関数ポインターである。
SetResourceWprPolicyPSET_RESOURCE_WPR_POLICY_ROUTINE8/4+120+60リソースのWPR(Windows Performance Recorder)ポリシーを設定するコールバックへの関数ポインターである。
ArmWprWatchdogForCurrentResourceCallPARM_WPR_WATCHDOG_FOR_CURRENT_RESOURCE_CALL_ROUTINE8/4+128+64現在のリソース呼び出しに対しWPRウォッチドッグを作動させるコールバックへの関数ポインターである。

各言語での定義

#include <windows.h>

// CLRES_CALLBACK_FUNCTION_TABLE  (x64 136 / x86 68 バイト)
typedef struct CLRES_CALLBACK_FUNCTION_TABLE {
    PLOG_EVENT_ROUTINE LogEvent;
    PSET_RESOURCE_STATUS_ROUTINE_EX SetResourceStatusEx;
    PSET_RESOURCE_LOCKED_MODE_ROUTINE SetResourceLockedMode;
    PSIGNAL_FAILURE_ROUTINE SignalFailure;
    PSET_RESOURCE_INMEMORY_NODELOCAL_PROPERTIES_ROUTINE SetResourceInMemoryNodeLocalProperties;
    PEND_CONTROL_CALL EndControlCall;
    PEND_TYPE_CONTROL_CALL EndTypeControlCall;
    PEXTEND_RES_CONTROL_CALL ExtendControlCall;
    PEXTEND_RES_TYPE_CONTROL_CALL ExtendTypeControlCall;
    PRAISE_RES_TYPE_NOTIFICATION RaiseResTypeNotification;
    PCHANGE_RESOURCE_PROCESS_FOR_DUMPS ChangeResourceProcessForDumps;
    PCHANGE_RES_TYPE_PROCESS_FOR_DUMPS ChangeResTypeProcessForDumps;
    PSET_INTERNAL_STATE SetInternalState;
    PSET_RESOURCE_LOCKED_MODE_EX_ROUTINE SetResourceLockedModeEx;
    PREQUEST_DUMP_ROUTINE RequestDump;
    PSET_RESOURCE_WPR_POLICY_ROUTINE SetResourceWprPolicy;
    PARM_WPR_WATCHDOG_FOR_CURRENT_RESOURCE_CALL_ROUTINE ArmWprWatchdogForCurrentResourceCall;
} CLRES_CALLBACK_FUNCTION_TABLE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLRES_CALLBACK_FUNCTION_TABLE
{
    public IntPtr LogEvent;
    public IntPtr SetResourceStatusEx;
    public IntPtr SetResourceLockedMode;
    public IntPtr SignalFailure;
    public IntPtr SetResourceInMemoryNodeLocalProperties;
    public IntPtr EndControlCall;
    public IntPtr EndTypeControlCall;
    public IntPtr ExtendControlCall;
    public IntPtr ExtendTypeControlCall;
    public IntPtr RaiseResTypeNotification;
    public IntPtr ChangeResourceProcessForDumps;
    public IntPtr ChangeResTypeProcessForDumps;
    public IntPtr SetInternalState;
    public IntPtr SetResourceLockedModeEx;
    public IntPtr RequestDump;
    public IntPtr SetResourceWprPolicy;
    public IntPtr ArmWprWatchdogForCurrentResourceCall;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLRES_CALLBACK_FUNCTION_TABLE
    Public LogEvent As IntPtr
    Public SetResourceStatusEx As IntPtr
    Public SetResourceLockedMode As IntPtr
    Public SignalFailure As IntPtr
    Public SetResourceInMemoryNodeLocalProperties As IntPtr
    Public EndControlCall As IntPtr
    Public EndTypeControlCall As IntPtr
    Public ExtendControlCall As IntPtr
    Public ExtendTypeControlCall As IntPtr
    Public RaiseResTypeNotification As IntPtr
    Public ChangeResourceProcessForDumps As IntPtr
    Public ChangeResTypeProcessForDumps As IntPtr
    Public SetInternalState As IntPtr
    Public SetResourceLockedModeEx As IntPtr
    Public RequestDump As IntPtr
    Public SetResourceWprPolicy As IntPtr
    Public ArmWprWatchdogForCurrentResourceCall As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class CLRES_CALLBACK_FUNCTION_TABLE(ctypes.Structure):
    _fields_ = [
        ("LogEvent", ctypes.c_void_p),
        ("SetResourceStatusEx", ctypes.c_void_p),
        ("SetResourceLockedMode", ctypes.c_void_p),
        ("SignalFailure", ctypes.c_void_p),
        ("SetResourceInMemoryNodeLocalProperties", ctypes.c_void_p),
        ("EndControlCall", ctypes.c_void_p),
        ("EndTypeControlCall", ctypes.c_void_p),
        ("ExtendControlCall", ctypes.c_void_p),
        ("ExtendTypeControlCall", ctypes.c_void_p),
        ("RaiseResTypeNotification", ctypes.c_void_p),
        ("ChangeResourceProcessForDumps", ctypes.c_void_p),
        ("ChangeResTypeProcessForDumps", ctypes.c_void_p),
        ("SetInternalState", ctypes.c_void_p),
        ("SetResourceLockedModeEx", ctypes.c_void_p),
        ("RequestDump", ctypes.c_void_p),
        ("SetResourceWprPolicy", ctypes.c_void_p),
        ("ArmWprWatchdogForCurrentResourceCall", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct CLRES_CALLBACK_FUNCTION_TABLE {
    pub LogEvent: *mut core::ffi::c_void,
    pub SetResourceStatusEx: *mut core::ffi::c_void,
    pub SetResourceLockedMode: *mut core::ffi::c_void,
    pub SignalFailure: *mut core::ffi::c_void,
    pub SetResourceInMemoryNodeLocalProperties: *mut core::ffi::c_void,
    pub EndControlCall: *mut core::ffi::c_void,
    pub EndTypeControlCall: *mut core::ffi::c_void,
    pub ExtendControlCall: *mut core::ffi::c_void,
    pub ExtendTypeControlCall: *mut core::ffi::c_void,
    pub RaiseResTypeNotification: *mut core::ffi::c_void,
    pub ChangeResourceProcessForDumps: *mut core::ffi::c_void,
    pub ChangeResTypeProcessForDumps: *mut core::ffi::c_void,
    pub SetInternalState: *mut core::ffi::c_void,
    pub SetResourceLockedModeEx: *mut core::ffi::c_void,
    pub RequestDump: *mut core::ffi::c_void,
    pub SetResourceWprPolicy: *mut core::ffi::c_void,
    pub ArmWprWatchdogForCurrentResourceCall: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type CLRES_CALLBACK_FUNCTION_TABLE struct {
	LogEvent uintptr
	SetResourceStatusEx uintptr
	SetResourceLockedMode uintptr
	SignalFailure uintptr
	SetResourceInMemoryNodeLocalProperties uintptr
	EndControlCall uintptr
	EndTypeControlCall uintptr
	ExtendControlCall uintptr
	ExtendTypeControlCall uintptr
	RaiseResTypeNotification uintptr
	ChangeResourceProcessForDumps uintptr
	ChangeResTypeProcessForDumps uintptr
	SetInternalState uintptr
	SetResourceLockedModeEx uintptr
	RequestDump uintptr
	SetResourceWprPolicy uintptr
	ArmWprWatchdogForCurrentResourceCall uintptr
}
type
  CLRES_CALLBACK_FUNCTION_TABLE = record
    LogEvent: Pointer;
    SetResourceStatusEx: Pointer;
    SetResourceLockedMode: Pointer;
    SignalFailure: Pointer;
    SetResourceInMemoryNodeLocalProperties: Pointer;
    EndControlCall: Pointer;
    EndTypeControlCall: Pointer;
    ExtendControlCall: Pointer;
    ExtendTypeControlCall: Pointer;
    RaiseResTypeNotification: Pointer;
    ChangeResourceProcessForDumps: Pointer;
    ChangeResTypeProcessForDumps: Pointer;
    SetInternalState: Pointer;
    SetResourceLockedModeEx: Pointer;
    RequestDump: Pointer;
    SetResourceWprPolicy: Pointer;
    ArmWprWatchdogForCurrentResourceCall: Pointer;
  end;
const CLRES_CALLBACK_FUNCTION_TABLE = extern struct {
    LogEvent: ?*anyopaque,
    SetResourceStatusEx: ?*anyopaque,
    SetResourceLockedMode: ?*anyopaque,
    SignalFailure: ?*anyopaque,
    SetResourceInMemoryNodeLocalProperties: ?*anyopaque,
    EndControlCall: ?*anyopaque,
    EndTypeControlCall: ?*anyopaque,
    ExtendControlCall: ?*anyopaque,
    ExtendTypeControlCall: ?*anyopaque,
    RaiseResTypeNotification: ?*anyopaque,
    ChangeResourceProcessForDumps: ?*anyopaque,
    ChangeResTypeProcessForDumps: ?*anyopaque,
    SetInternalState: ?*anyopaque,
    SetResourceLockedModeEx: ?*anyopaque,
    RequestDump: ?*anyopaque,
    SetResourceWprPolicy: ?*anyopaque,
    ArmWprWatchdogForCurrentResourceCall: ?*anyopaque,
};
type
  CLRES_CALLBACK_FUNCTION_TABLE {.bycopy.} = object
    LogEvent: pointer
    SetResourceStatusEx: pointer
    SetResourceLockedMode: pointer
    SignalFailure: pointer
    SetResourceInMemoryNodeLocalProperties: pointer
    EndControlCall: pointer
    EndTypeControlCall: pointer
    ExtendControlCall: pointer
    ExtendTypeControlCall: pointer
    RaiseResTypeNotification: pointer
    ChangeResourceProcessForDumps: pointer
    ChangeResTypeProcessForDumps: pointer
    SetInternalState: pointer
    SetResourceLockedModeEx: pointer
    RequestDump: pointer
    SetResourceWprPolicy: pointer
    ArmWprWatchdogForCurrentResourceCall: pointer
struct CLRES_CALLBACK_FUNCTION_TABLE
{
    void* LogEvent;
    void* SetResourceStatusEx;
    void* SetResourceLockedMode;
    void* SignalFailure;
    void* SetResourceInMemoryNodeLocalProperties;
    void* EndControlCall;
    void* EndTypeControlCall;
    void* ExtendControlCall;
    void* ExtendTypeControlCall;
    void* RaiseResTypeNotification;
    void* ChangeResourceProcessForDumps;
    void* ChangeResTypeProcessForDumps;
    void* SetInternalState;
    void* SetResourceLockedModeEx;
    void* RequestDump;
    void* SetResourceWprPolicy;
    void* ArmWprWatchdogForCurrentResourceCall;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; CLRES_CALLBACK_FUNCTION_TABLE サイズ: 68 バイト(x86)
dim st, 17    ; 4byte整数×17(構造体サイズ 68 / 4 切り上げ)
; LogEvent : PLOG_EVENT_ROUTINE (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; SetResourceStatusEx : PSET_RESOURCE_STATUS_ROUTINE_EX (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; SetResourceLockedMode : PSET_RESOURCE_LOCKED_MODE_ROUTINE (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; SignalFailure : PSIGNAL_FAILURE_ROUTINE (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; SetResourceInMemoryNodeLocalProperties : PSET_RESOURCE_INMEMORY_NODELOCAL_PROPERTIES_ROUTINE (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; EndControlCall : PEND_CONTROL_CALL (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; EndTypeControlCall : PEND_TYPE_CONTROL_CALL (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ExtendControlCall : PEXTEND_RES_CONTROL_CALL (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; ExtendTypeControlCall : PEXTEND_RES_TYPE_CONTROL_CALL (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; RaiseResTypeNotification : PRAISE_RES_TYPE_NOTIFICATION (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; ChangeResourceProcessForDumps : PCHANGE_RESOURCE_PROCESS_FOR_DUMPS (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ChangeResTypeProcessForDumps : PCHANGE_RES_TYPE_PROCESS_FOR_DUMPS (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; SetInternalState : PSET_INTERNAL_STATE (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; SetResourceLockedModeEx : PSET_RESOURCE_LOCKED_MODE_EX_ROUTINE (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; RequestDump : PREQUEST_DUMP_ROUTINE (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; SetResourceWprPolicy : PSET_RESOURCE_WPR_POLICY_ROUTINE (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; ArmWprWatchdogForCurrentResourceCall : PARM_WPR_WATCHDOG_FOR_CURRENT_RESOURCE_CALL_ROUTINE (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CLRES_CALLBACK_FUNCTION_TABLE サイズ: 136 バイト(x64)
dim st, 34    ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; LogEvent : PLOG_EVENT_ROUTINE (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; SetResourceStatusEx : PSET_RESOURCE_STATUS_ROUTINE_EX (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; SetResourceLockedMode : PSET_RESOURCE_LOCKED_MODE_ROUTINE (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; SignalFailure : PSIGNAL_FAILURE_ROUTINE (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; SetResourceInMemoryNodeLocalProperties : PSET_RESOURCE_INMEMORY_NODELOCAL_PROPERTIES_ROUTINE (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; EndControlCall : PEND_CONTROL_CALL (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; EndTypeControlCall : PEND_TYPE_CONTROL_CALL (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ExtendControlCall : PEXTEND_RES_CONTROL_CALL (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ExtendTypeControlCall : PEXTEND_RES_TYPE_CONTROL_CALL (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; RaiseResTypeNotification : PRAISE_RES_TYPE_NOTIFICATION (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ChangeResourceProcessForDumps : PCHANGE_RESOURCE_PROCESS_FOR_DUMPS (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ChangeResTypeProcessForDumps : PCHANGE_RES_TYPE_PROCESS_FOR_DUMPS (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; SetInternalState : PSET_INTERNAL_STATE (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; SetResourceLockedModeEx : PSET_RESOURCE_LOCKED_MODE_EX_ROUTINE (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; RequestDump : PREQUEST_DUMP_ROUTINE (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; SetResourceWprPolicy : PSET_RESOURCE_WPR_POLICY_ROUTINE (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; ArmWprWatchdogForCurrentResourceCall : PARM_WPR_WATCHDOG_FOR_CURRENT_RESOURCE_CALL_ROUTINE (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CLRES_CALLBACK_FUNCTION_TABLE
    #field intptr LogEvent
    #field intptr SetResourceStatusEx
    #field intptr SetResourceLockedMode
    #field intptr SignalFailure
    #field intptr SetResourceInMemoryNodeLocalProperties
    #field intptr EndControlCall
    #field intptr EndTypeControlCall
    #field intptr ExtendControlCall
    #field intptr ExtendTypeControlCall
    #field intptr RaiseResTypeNotification
    #field intptr ChangeResourceProcessForDumps
    #field intptr ChangeResTypeProcessForDumps
    #field intptr SetInternalState
    #field intptr SetResourceLockedModeEx
    #field intptr RequestDump
    #field intptr SetResourceWprPolicy
    #field intptr ArmWprWatchdogForCurrentResourceCall
#endstruct

stdim st, CLRES_CALLBACK_FUNCTION_TABLE        ; NSTRUCT 変数を確保