ホーム › Networking.Clustering › CLRES_CALLBACK_FUNCTION_TABLE
CLRES_CALLBACK_FUNCTION_TABLE
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| LogEvent | PLOG_EVENT_ROUTINE | 8/4 | +0 | +0 | イベントをログに記録するLogEventコールバックへの関数ポインターである。 |
| SetResourceStatusEx | PSET_RESOURCE_STATUS_ROUTINE_EX | 8/4 | +8 | +4 | リソース状態を拡張形式で設定するSetResourceStatusExコールバックへの関数ポインターである。 |
| SetResourceLockedMode | PSET_RESOURCE_LOCKED_MODE_ROUTINE | 8/4 | +16 | +8 | リソースのロックモードを設定するコールバックへの関数ポインターである。 |
| SignalFailure | PSIGNAL_FAILURE_ROUTINE | 8/4 | +24 | +12 | リソースの障害を通知するSignalFailureコールバックへの関数ポインターである。 |
| SetResourceInMemoryNodeLocalProperties | PSET_RESOURCE_INMEMORY_NODELOCAL_PROPERTIES_ROUTINE | 8/4 | +32 | +16 | ノードローカルのインメモリプロパティを設定するコールバックへの関数ポインターである。 |
| EndControlCall | PEND_CONTROL_CALL | 8/4 | +40 | +20 | リソース制御呼び出しを完了するEndControlCallコールバックへの関数ポインターである。 |
| EndTypeControlCall | PEND_TYPE_CONTROL_CALL | 8/4 | +48 | +24 | リソース種別制御呼び出しを完了するEndTypeControlCallコールバックへの関数ポインターである。 |
| ExtendControlCall | PEXTEND_RES_CONTROL_CALL | 8/4 | +56 | +28 | リソース制御呼び出しの時間を延長するコールバックへの関数ポインターである。 |
| ExtendTypeControlCall | PEXTEND_RES_TYPE_CONTROL_CALL | 8/4 | +64 | +32 | リソース種別制御呼び出しの時間を延長するコールバックへの関数ポインターである。 |
| RaiseResTypeNotification | PRAISE_RES_TYPE_NOTIFICATION | 8/4 | +72 | +36 | リソース種別通知を発生させるコールバックへの関数ポインターである。 |
| ChangeResourceProcessForDumps | PCHANGE_RESOURCE_PROCESS_FOR_DUMPS | 8/4 | +80 | +40 | ダンプ用にリソースプロセスを変更するコールバックへの関数ポインターである。 |
| ChangeResTypeProcessForDumps | PCHANGE_RES_TYPE_PROCESS_FOR_DUMPS | 8/4 | +88 | +44 | ダンプ用にリソース種別プロセスを変更するコールバックへの関数ポインターである。 |
| SetInternalState | PSET_INTERNAL_STATE | 8/4 | +96 | +48 | リソースの内部状態を設定するSetInternalStateコールバックへの関数ポインターである。 |
| SetResourceLockedModeEx | PSET_RESOURCE_LOCKED_MODE_EX_ROUTINE | 8/4 | +104 | +52 | リソースのロックモードを拡張形式で設定するコールバックへの関数ポインターである。 |
| RequestDump | PREQUEST_DUMP_ROUTINE | 8/4 | +112 | +56 | ダンプ取得を要求するRequestDumpコールバックへの関数ポインターである。 |
| SetResourceWprPolicy | PSET_RESOURCE_WPR_POLICY_ROUTINE | 8/4 | +120 | +60 | リソースのWPR(Windows Performance Recorder)ポリシーを設定するコールバックへの関数ポインターである。 |
| ArmWprWatchdogForCurrentResourceCall | PARM_WPR_WATCHDOG_FOR_CURRENT_RESOURCE_CALL_ROUTINE | 8/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 Structureimport 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: pointerstruct 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 変数を確保