Win32 API 日本語リファレンス
ホームSecurity.DiagnosticDataQuery › DdqIsDiagnosticRecordSampledIn

DdqIsDiagnosticRecordSampledIn

関数
指定イベントが診断データのサンプリング対象か判定する。
DLLDiagnosticDataQuery.dll呼出規約winapi対応OSWindows 10 以降

シグネチャ

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

HRESULT DdqIsDiagnosticRecordSampledIn(
    HDIAGNOSTIC_DATA_QUERY_SESSION hSession,
    const GUID* providerGroup,
    const GUID* providerId,   // optional
    LPCWSTR providerName,
    const DWORD* eventId,   // optional
    LPCWSTR eventName,
    const DWORD* eventVersion,   // optional
    const ULONGLONG* eventKeywords,   // optional
    BOOL* isSampledIn
);

パラメーター

名前方向
hSessionHDIAGNOSTIC_DATA_QUERY_SESSIONin
providerGroupGUID*in
providerIdGUID*inoptional
providerNameLPCWSTRin
eventIdDWORD*inoptional
eventNameLPCWSTRin
eventVersionDWORD*inoptional
eventKeywordsULONGLONG*inoptional
isSampledInBOOL*out

戻り値の型: HRESULT

各言語での呼び出し定義

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

HRESULT DdqIsDiagnosticRecordSampledIn(
    HDIAGNOSTIC_DATA_QUERY_SESSION hSession,
    const GUID* providerGroup,
    const GUID* providerId,   // optional
    LPCWSTR providerName,
    const DWORD* eventId,   // optional
    LPCWSTR eventName,
    const DWORD* eventVersion,   // optional
    const ULONGLONG* eventKeywords,   // optional
    BOOL* isSampledIn
);
[DllImport("DiagnosticDataQuery.dll", ExactSpelling = true)]
static extern int DdqIsDiagnosticRecordSampledIn(
    IntPtr hSession,   // HDIAGNOSTIC_DATA_QUERY_SESSION
    ref Guid providerGroup,   // GUID*
    IntPtr providerId,   // GUID* optional
    [MarshalAs(UnmanagedType.LPWStr)] string providerName,   // LPCWSTR
    IntPtr eventId,   // DWORD* optional
    [MarshalAs(UnmanagedType.LPWStr)] string eventName,   // LPCWSTR
    IntPtr eventVersion,   // DWORD* optional
    IntPtr eventKeywords,   // ULONGLONG* optional
    out int isSampledIn   // BOOL* out
);
<DllImport("DiagnosticDataQuery.dll", ExactSpelling:=True)>
Public Shared Function DdqIsDiagnosticRecordSampledIn(
    hSession As IntPtr,   ' HDIAGNOSTIC_DATA_QUERY_SESSION
    ByRef providerGroup As Guid,   ' GUID*
    providerId As IntPtr,   ' GUID* optional
    <MarshalAs(UnmanagedType.LPWStr)> providerName As String,   ' LPCWSTR
    eventId As IntPtr,   ' DWORD* optional
    <MarshalAs(UnmanagedType.LPWStr)> eventName As String,   ' LPCWSTR
    eventVersion As IntPtr,   ' DWORD* optional
    eventKeywords As IntPtr,   ' ULONGLONG* optional
    <Out> ByRef isSampledIn As Integer   ' BOOL* out
) As Integer
End Function
' hSession : HDIAGNOSTIC_DATA_QUERY_SESSION
' providerGroup : GUID*
' providerId : GUID* optional
' providerName : LPCWSTR
' eventId : DWORD* optional
' eventName : LPCWSTR
' eventVersion : DWORD* optional
' eventKeywords : ULONGLONG* optional
' isSampledIn : BOOL* out
Declare PtrSafe Function DdqIsDiagnosticRecordSampledIn Lib "diagnosticdataquery" ( _
    ByVal hSession As LongPtr, _
    ByVal providerGroup As LongPtr, _
    ByVal providerId As LongPtr, _
    ByVal providerName As LongPtr, _
    ByVal eventId As LongPtr, _
    ByVal eventName As LongPtr, _
    ByVal eventVersion As LongPtr, _
    ByVal eventKeywords As LongPtr, _
    ByRef isSampledIn As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

DdqIsDiagnosticRecordSampledIn = ctypes.windll.diagnosticdataquery.DdqIsDiagnosticRecordSampledIn
DdqIsDiagnosticRecordSampledIn.restype = ctypes.c_int
DdqIsDiagnosticRecordSampledIn.argtypes = [
    wintypes.HANDLE,  # hSession : HDIAGNOSTIC_DATA_QUERY_SESSION
    ctypes.c_void_p,  # providerGroup : GUID*
    ctypes.c_void_p,  # providerId : GUID* optional
    wintypes.LPCWSTR,  # providerName : LPCWSTR
    ctypes.POINTER(wintypes.DWORD),  # eventId : DWORD* optional
    wintypes.LPCWSTR,  # eventName : LPCWSTR
    ctypes.POINTER(wintypes.DWORD),  # eventVersion : DWORD* optional
    ctypes.POINTER(ctypes.c_ulonglong),  # eventKeywords : ULONGLONG* optional
    ctypes.c_void_p,  # isSampledIn : BOOL* out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('DiagnosticDataQuery.dll')
DdqIsDiagnosticRecordSampledIn = Fiddle::Function.new(
  lib['DdqIsDiagnosticRecordSampledIn'],
  [
    Fiddle::TYPE_VOIDP,  # hSession : HDIAGNOSTIC_DATA_QUERY_SESSION
    Fiddle::TYPE_VOIDP,  # providerGroup : GUID*
    Fiddle::TYPE_VOIDP,  # providerId : GUID* optional
    Fiddle::TYPE_VOIDP,  # providerName : LPCWSTR
    Fiddle::TYPE_VOIDP,  # eventId : DWORD* optional
    Fiddle::TYPE_VOIDP,  # eventName : LPCWSTR
    Fiddle::TYPE_VOIDP,  # eventVersion : DWORD* optional
    Fiddle::TYPE_VOIDP,  # eventKeywords : ULONGLONG* optional
    Fiddle::TYPE_VOIDP,  # isSampledIn : BOOL* out
  ],
  Fiddle::TYPE_INT)
#[link(name = "diagnosticdataquery")]
extern "system" {
    fn DdqIsDiagnosticRecordSampledIn(
        hSession: *mut core::ffi::c_void,  // HDIAGNOSTIC_DATA_QUERY_SESSION
        providerGroup: *const GUID,  // GUID*
        providerId: *const GUID,  // GUID* optional
        providerName: *const u16,  // LPCWSTR
        eventId: *const u32,  // DWORD* optional
        eventName: *const u16,  // LPCWSTR
        eventVersion: *const u32,  // DWORD* optional
        eventKeywords: *const u64,  // ULONGLONG* optional
        isSampledIn: *mut i32  // BOOL* out
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("DiagnosticDataQuery.dll")]
public static extern int DdqIsDiagnosticRecordSampledIn(IntPtr hSession, ref Guid providerGroup, IntPtr providerId, [MarshalAs(UnmanagedType.LPWStr)] string providerName, IntPtr eventId, [MarshalAs(UnmanagedType.LPWStr)] string eventName, IntPtr eventVersion, IntPtr eventKeywords, out int isSampledIn);
"@
$api = Add-Type -MemberDefinition $sig -Name 'DiagnosticDataQuery_DdqIsDiagnosticRecordSampledIn' -Namespace Win32 -PassThru
# $api::DdqIsDiagnosticRecordSampledIn(hSession, providerGroup, providerId, providerName, eventId, eventName, eventVersion, eventKeywords, isSampledIn)
#uselib "DiagnosticDataQuery.dll"
#func global DdqIsDiagnosticRecordSampledIn "DdqIsDiagnosticRecordSampledIn" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; DdqIsDiagnosticRecordSampledIn hSession, varptr(providerGroup), varptr(providerId), providerName, varptr(eventId), eventName, varptr(eventVersion), varptr(eventKeywords), isSampledIn   ; 戻り値は stat
; hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "sptr"
; providerGroup : GUID* -> "sptr"
; providerId : GUID* optional -> "sptr"
; providerName : LPCWSTR -> "sptr"
; eventId : DWORD* optional -> "sptr"
; eventName : LPCWSTR -> "sptr"
; eventVersion : DWORD* optional -> "sptr"
; eventKeywords : ULONGLONG* optional -> "sptr"
; isSampledIn : BOOL* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "DiagnosticDataQuery.dll"
#cfunc global DdqIsDiagnosticRecordSampledIn "DdqIsDiagnosticRecordSampledIn" sptr, var, var, wstr, var, wstr, var, var, int
; res = DdqIsDiagnosticRecordSampledIn(hSession, providerGroup, providerId, providerName, eventId, eventName, eventVersion, eventKeywords, isSampledIn)
; hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "sptr"
; providerGroup : GUID* -> "var"
; providerId : GUID* optional -> "var"
; providerName : LPCWSTR -> "wstr"
; eventId : DWORD* optional -> "var"
; eventName : LPCWSTR -> "wstr"
; eventVersion : DWORD* optional -> "var"
; eventKeywords : ULONGLONG* optional -> "var"
; isSampledIn : BOOL* out -> "int"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; HRESULT DdqIsDiagnosticRecordSampledIn(HDIAGNOSTIC_DATA_QUERY_SESSION hSession, GUID* providerGroup, GUID* providerId, LPCWSTR providerName, DWORD* eventId, LPCWSTR eventName, DWORD* eventVersion, ULONGLONG* eventKeywords, BOOL* isSampledIn)
#uselib "DiagnosticDataQuery.dll"
#cfunc global DdqIsDiagnosticRecordSampledIn "DdqIsDiagnosticRecordSampledIn" intptr, var, var, wstr, var, wstr, var, var, int
; res = DdqIsDiagnosticRecordSampledIn(hSession, providerGroup, providerId, providerName, eventId, eventName, eventVersion, eventKeywords, isSampledIn)
; hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "intptr"
; providerGroup : GUID* -> "var"
; providerId : GUID* optional -> "var"
; providerName : LPCWSTR -> "wstr"
; eventId : DWORD* optional -> "var"
; eventName : LPCWSTR -> "wstr"
; eventVersion : DWORD* optional -> "var"
; eventKeywords : ULONGLONG* optional -> "var"
; isSampledIn : BOOL* out -> "int"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	diagnosticdataquery = windows.NewLazySystemDLL("DiagnosticDataQuery.dll")
	procDdqIsDiagnosticRecordSampledIn = diagnosticdataquery.NewProc("DdqIsDiagnosticRecordSampledIn")
)

// hSession (HDIAGNOSTIC_DATA_QUERY_SESSION), providerGroup (GUID*), providerId (GUID* optional), providerName (LPCWSTR), eventId (DWORD* optional), eventName (LPCWSTR), eventVersion (DWORD* optional), eventKeywords (ULONGLONG* optional), isSampledIn (BOOL* out)
r1, _, err := procDdqIsDiagnosticRecordSampledIn.Call(
	uintptr(hSession),
	uintptr(providerGroup),
	uintptr(providerId),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(providerName))),
	uintptr(eventId),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(eventName))),
	uintptr(eventVersion),
	uintptr(eventKeywords),
	uintptr(isSampledIn),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // HRESULT
function DdqIsDiagnosticRecordSampledIn(
  hSession: THandle;   // HDIAGNOSTIC_DATA_QUERY_SESSION
  providerGroup: PGUID;   // GUID*
  providerId: PGUID;   // GUID* optional
  providerName: PWideChar;   // LPCWSTR
  eventId: Pointer;   // DWORD* optional
  eventName: PWideChar;   // LPCWSTR
  eventVersion: Pointer;   // DWORD* optional
  eventKeywords: Pointer;   // ULONGLONG* optional
  isSampledIn: Pointer   // BOOL* out
): Integer; stdcall;
  external 'DiagnosticDataQuery.dll' name 'DdqIsDiagnosticRecordSampledIn';
result := DllCall("DiagnosticDataQuery\DdqIsDiagnosticRecordSampledIn"
    , "Ptr", hSession   ; HDIAGNOSTIC_DATA_QUERY_SESSION
    , "Ptr", providerGroup   ; GUID*
    , "Ptr", providerId   ; GUID* optional
    , "WStr", providerName   ; LPCWSTR
    , "Ptr", eventId   ; DWORD* optional
    , "WStr", eventName   ; LPCWSTR
    , "Ptr", eventVersion   ; DWORD* optional
    , "Ptr", eventKeywords   ; ULONGLONG* optional
    , "Ptr", isSampledIn   ; BOOL* out
    , "Int")   ; return: HRESULT
●DdqIsDiagnosticRecordSampledIn(hSession, providerGroup, providerId, providerName, eventId, eventName, eventVersion, eventKeywords, isSampledIn) = DLL("DiagnosticDataQuery.dll", "int DdqIsDiagnosticRecordSampledIn(void*, void*, void*, char*, void*, char*, void*, void*, void*)")
# 呼び出し: DdqIsDiagnosticRecordSampledIn(hSession, providerGroup, providerId, providerName, eventId, eventName, eventVersion, eventKeywords, isSampledIn)
# hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "void*"
# providerGroup : GUID* -> "void*"
# providerId : GUID* optional -> "void*"
# providerName : LPCWSTR -> "char*"
# eventId : DWORD* optional -> "void*"
# eventName : LPCWSTR -> "char*"
# eventVersion : DWORD* optional -> "void*"
# eventKeywords : ULONGLONG* optional -> "void*"
# isSampledIn : BOOL* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。