ホーム › Security.DiagnosticDataQuery › DdqIsDiagnosticRecordSampledIn
DdqIsDiagnosticRecordSampledIn
関数指定イベントが診断データのサンプリング対象か判定する。
シグネチャ
// 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
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| hSession | HDIAGNOSTIC_DATA_QUERY_SESSION | in |
| providerGroup | GUID* | in |
| providerId | GUID* | inoptional |
| providerName | LPCWSTR | in |
| eventId | DWORD* | inoptional |
| eventName | LPCWSTR | in |
| eventVersion | DWORD* | inoptional |
| eventKeywords | ULONGLONG* | inoptional |
| isSampledIn | BOOL* | 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 方式にも切替可。#uselib "DiagnosticDataQuery.dll" #cfunc global DdqIsDiagnosticRecordSampledIn "DdqIsDiagnosticRecordSampledIn" sptr, sptr, sptr, wstr, sptr, wstr, sptr, sptr, int ; res = DdqIsDiagnosticRecordSampledIn(hSession, varptr(providerGroup), varptr(providerId), providerName, varptr(eventId), eventName, varptr(eventVersion), varptr(eventKeywords), isSampledIn) ; hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "sptr" ; providerGroup : GUID* -> "sptr" ; providerId : GUID* optional -> "sptr" ; providerName : LPCWSTR -> "wstr" ; eventId : DWORD* optional -> "sptr" ; eventName : LPCWSTR -> "wstr" ; eventVersion : DWORD* optional -> "sptr" ; eventKeywords : ULONGLONG* optional -> "sptr" ; isSampledIn : BOOL* out -> "int" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは 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 方式にも切替可。; 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, intptr, intptr, wstr, intptr, wstr, intptr, intptr, int ; res = DdqIsDiagnosticRecordSampledIn(hSession, varptr(providerGroup), varptr(providerId), providerName, varptr(eventId), eventName, varptr(eventVersion), varptr(eventKeywords), isSampledIn) ; hSession : HDIAGNOSTIC_DATA_QUERY_SESSION -> "intptr" ; providerGroup : GUID* -> "intptr" ; providerId : GUID* optional -> "intptr" ; providerName : LPCWSTR -> "wstr" ; eventId : DWORD* optional -> "intptr" ; eventName : LPCWSTR -> "wstr" ; eventVersion : DWORD* optional -> "intptr" ; eventKeywords : ULONGLONG* optional -> "intptr" ; isSampledIn : BOOL* out -> "int" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは 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 // HRESULTfunction 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)。