Win32 API 日本語リファレンス
ホームSystem.Performance › PerfQueryCounterSetRegistrationInfo

PerfQueryCounterSetRegistrationInfo

関数
カウンターセットの登録情報を照会して取得する。
DLLADVAPI32.dll呼出規約winapi対応OSWindows 10 以降

シグネチャ

// ADVAPI32.dll
#include <windows.h>

DWORD PerfQueryCounterSetRegistrationInfo(
    LPCWSTR szMachine,   // optional
    const GUID* pCounterSetId,
    PerfRegInfoType requestCode,
    DWORD requestLangId,
    BYTE* pbRegInfo,   // optional
    DWORD cbRegInfo,
    DWORD* pcbRegInfoActual
);

パラメーター

名前方向
szMachineLPCWSTRinoptional
pCounterSetIdGUID*in
requestCodePerfRegInfoTypein
requestLangIdDWORDin
pbRegInfoBYTE*outoptional
cbRegInfoDWORDin
pcbRegInfoActualDWORD*out

戻り値の型: DWORD

各言語での呼び出し定義

// ADVAPI32.dll
#include <windows.h>

DWORD PerfQueryCounterSetRegistrationInfo(
    LPCWSTR szMachine,   // optional
    const GUID* pCounterSetId,
    PerfRegInfoType requestCode,
    DWORD requestLangId,
    BYTE* pbRegInfo,   // optional
    DWORD cbRegInfo,
    DWORD* pcbRegInfoActual
);
[DllImport("ADVAPI32.dll", ExactSpelling = true)]
static extern uint PerfQueryCounterSetRegistrationInfo(
    [MarshalAs(UnmanagedType.LPWStr)] string szMachine,   // LPCWSTR optional
    ref Guid pCounterSetId,   // GUID*
    int requestCode,   // PerfRegInfoType
    uint requestLangId,   // DWORD
    IntPtr pbRegInfo,   // BYTE* optional, out
    uint cbRegInfo,   // DWORD
    out uint pcbRegInfoActual   // DWORD* out
);
<DllImport("ADVAPI32.dll", ExactSpelling:=True)>
Public Shared Function PerfQueryCounterSetRegistrationInfo(
    <MarshalAs(UnmanagedType.LPWStr)> szMachine As String,   ' LPCWSTR optional
    ByRef pCounterSetId As Guid,   ' GUID*
    requestCode As Integer,   ' PerfRegInfoType
    requestLangId As UInteger,   ' DWORD
    pbRegInfo As IntPtr,   ' BYTE* optional, out
    cbRegInfo As UInteger,   ' DWORD
    <Out> ByRef pcbRegInfoActual As UInteger   ' DWORD* out
) As UInteger
End Function
' szMachine : LPCWSTR optional
' pCounterSetId : GUID*
' requestCode : PerfRegInfoType
' requestLangId : DWORD
' pbRegInfo : BYTE* optional, out
' cbRegInfo : DWORD
' pcbRegInfoActual : DWORD* out
Declare PtrSafe Function PerfQueryCounterSetRegistrationInfo Lib "advapi32" ( _
    ByVal szMachine As LongPtr, _
    ByVal pCounterSetId As LongPtr, _
    ByVal requestCode As Long, _
    ByVal requestLangId As Long, _
    ByVal pbRegInfo As LongPtr, _
    ByVal cbRegInfo As Long, _
    ByRef pcbRegInfoActual As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

PerfQueryCounterSetRegistrationInfo = ctypes.windll.advapi32.PerfQueryCounterSetRegistrationInfo
PerfQueryCounterSetRegistrationInfo.restype = wintypes.DWORD
PerfQueryCounterSetRegistrationInfo.argtypes = [
    wintypes.LPCWSTR,  # szMachine : LPCWSTR optional
    ctypes.c_void_p,  # pCounterSetId : GUID*
    ctypes.c_int,  # requestCode : PerfRegInfoType
    wintypes.DWORD,  # requestLangId : DWORD
    ctypes.POINTER(ctypes.c_ubyte),  # pbRegInfo : BYTE* optional, out
    wintypes.DWORD,  # cbRegInfo : DWORD
    ctypes.POINTER(wintypes.DWORD),  # pcbRegInfoActual : DWORD* out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('ADVAPI32.dll')
PerfQueryCounterSetRegistrationInfo = Fiddle::Function.new(
  lib['PerfQueryCounterSetRegistrationInfo'],
  [
    Fiddle::TYPE_VOIDP,  # szMachine : LPCWSTR optional
    Fiddle::TYPE_VOIDP,  # pCounterSetId : GUID*
    Fiddle::TYPE_INT,  # requestCode : PerfRegInfoType
    -Fiddle::TYPE_INT,  # requestLangId : DWORD
    Fiddle::TYPE_VOIDP,  # pbRegInfo : BYTE* optional, out
    -Fiddle::TYPE_INT,  # cbRegInfo : DWORD
    Fiddle::TYPE_VOIDP,  # pcbRegInfoActual : DWORD* out
  ],
  -Fiddle::TYPE_INT)
#[link(name = "advapi32")]
extern "system" {
    fn PerfQueryCounterSetRegistrationInfo(
        szMachine: *const u16,  // LPCWSTR optional
        pCounterSetId: *const GUID,  // GUID*
        requestCode: i32,  // PerfRegInfoType
        requestLangId: u32,  // DWORD
        pbRegInfo: *mut u8,  // BYTE* optional, out
        cbRegInfo: u32,  // DWORD
        pcbRegInfoActual: *mut u32  // DWORD* out
    ) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("ADVAPI32.dll")]
public static extern uint PerfQueryCounterSetRegistrationInfo([MarshalAs(UnmanagedType.LPWStr)] string szMachine, ref Guid pCounterSetId, int requestCode, uint requestLangId, IntPtr pbRegInfo, uint cbRegInfo, out uint pcbRegInfoActual);
"@
$api = Add-Type -MemberDefinition $sig -Name 'ADVAPI32_PerfQueryCounterSetRegistrationInfo' -Namespace Win32 -PassThru
# $api::PerfQueryCounterSetRegistrationInfo(szMachine, pCounterSetId, requestCode, requestLangId, pbRegInfo, cbRegInfo, pcbRegInfoActual)
#uselib "ADVAPI32.dll"
#func global PerfQueryCounterSetRegistrationInfo "PerfQueryCounterSetRegistrationInfo" sptr, sptr, sptr, sptr, sptr, sptr, sptr
; PerfQueryCounterSetRegistrationInfo szMachine, varptr(pCounterSetId), requestCode, requestLangId, varptr(pbRegInfo), cbRegInfo, varptr(pcbRegInfoActual)   ; 戻り値は stat
; szMachine : LPCWSTR optional -> "sptr"
; pCounterSetId : GUID* -> "sptr"
; requestCode : PerfRegInfoType -> "sptr"
; requestLangId : DWORD -> "sptr"
; pbRegInfo : BYTE* optional, out -> "sptr"
; cbRegInfo : DWORD -> "sptr"
; pcbRegInfoActual : DWORD* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "ADVAPI32.dll"
#cfunc global PerfQueryCounterSetRegistrationInfo "PerfQueryCounterSetRegistrationInfo" wstr, var, int, int, var, int, var
; res = PerfQueryCounterSetRegistrationInfo(szMachine, pCounterSetId, requestCode, requestLangId, pbRegInfo, cbRegInfo, pcbRegInfoActual)
; szMachine : LPCWSTR optional -> "wstr"
; pCounterSetId : GUID* -> "var"
; requestCode : PerfRegInfoType -> "int"
; requestLangId : DWORD -> "int"
; pbRegInfo : BYTE* optional, out -> "var"
; cbRegInfo : DWORD -> "int"
; pcbRegInfoActual : DWORD* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; DWORD PerfQueryCounterSetRegistrationInfo(LPCWSTR szMachine, GUID* pCounterSetId, PerfRegInfoType requestCode, DWORD requestLangId, BYTE* pbRegInfo, DWORD cbRegInfo, DWORD* pcbRegInfoActual)
#uselib "ADVAPI32.dll"
#cfunc global PerfQueryCounterSetRegistrationInfo "PerfQueryCounterSetRegistrationInfo" wstr, var, int, int, var, int, var
; res = PerfQueryCounterSetRegistrationInfo(szMachine, pCounterSetId, requestCode, requestLangId, pbRegInfo, cbRegInfo, pcbRegInfoActual)
; szMachine : LPCWSTR optional -> "wstr"
; pCounterSetId : GUID* -> "var"
; requestCode : PerfRegInfoType -> "int"
; requestLangId : DWORD -> "int"
; pbRegInfo : BYTE* optional, out -> "var"
; cbRegInfo : DWORD -> "int"
; pcbRegInfoActual : DWORD* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	advapi32 = windows.NewLazySystemDLL("ADVAPI32.dll")
	procPerfQueryCounterSetRegistrationInfo = advapi32.NewProc("PerfQueryCounterSetRegistrationInfo")
)

// szMachine (LPCWSTR optional), pCounterSetId (GUID*), requestCode (PerfRegInfoType), requestLangId (DWORD), pbRegInfo (BYTE* optional, out), cbRegInfo (DWORD), pcbRegInfoActual (DWORD* out)
r1, _, err := procPerfQueryCounterSetRegistrationInfo.Call(
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(szMachine))),
	uintptr(pCounterSetId),
	uintptr(requestCode),
	uintptr(requestLangId),
	uintptr(pbRegInfo),
	uintptr(cbRegInfo),
	uintptr(pcbRegInfoActual),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // DWORD
function PerfQueryCounterSetRegistrationInfo(
  szMachine: PWideChar;   // LPCWSTR optional
  pCounterSetId: PGUID;   // GUID*
  requestCode: Integer;   // PerfRegInfoType
  requestLangId: DWORD;   // DWORD
  pbRegInfo: Pointer;   // BYTE* optional, out
  cbRegInfo: DWORD;   // DWORD
  pcbRegInfoActual: Pointer   // DWORD* out
): DWORD; stdcall;
  external 'ADVAPI32.dll' name 'PerfQueryCounterSetRegistrationInfo';
result := DllCall("ADVAPI32\PerfQueryCounterSetRegistrationInfo"
    , "WStr", szMachine   ; LPCWSTR optional
    , "Ptr", pCounterSetId   ; GUID*
    , "Int", requestCode   ; PerfRegInfoType
    , "UInt", requestLangId   ; DWORD
    , "Ptr", pbRegInfo   ; BYTE* optional, out
    , "UInt", cbRegInfo   ; DWORD
    , "Ptr", pcbRegInfoActual   ; DWORD* out
    , "UInt")   ; return: DWORD
●PerfQueryCounterSetRegistrationInfo(szMachine, pCounterSetId, requestCode, requestLangId, pbRegInfo, cbRegInfo, pcbRegInfoActual) = DLL("ADVAPI32.dll", "dword PerfQueryCounterSetRegistrationInfo(char*, void*, int, dword, void*, dword, void*)")
# 呼び出し: PerfQueryCounterSetRegistrationInfo(szMachine, pCounterSetId, requestCode, requestLangId, pbRegInfo, cbRegInfo, pcbRegInfoActual)
# szMachine : LPCWSTR optional -> "char*"
# pCounterSetId : GUID* -> "void*"
# requestCode : PerfRegInfoType -> "int"
# requestLangId : DWORD -> "dword"
# pbRegInfo : BYTE* optional, out -> "void*"
# cbRegInfo : DWORD -> "dword"
# pcbRegInfoActual : DWORD* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。