ホーム › UI.Xaml.Diagnostics › InitializeXamlDiagnosticsEx
InitializeXamlDiagnosticsEx
関数初期化データ付きでXAML診断ツールを初期化する。
シグネチャ
// Windows.UI.Xaml.dll
#include <windows.h>
HRESULT InitializeXamlDiagnosticsEx(
LPCWSTR endPointName,
DWORD pid,
LPCWSTR wszDllXamlDiagnostics,
LPCWSTR wszTAPDllName,
GUID tapClsid,
LPCWSTR wszInitializationData
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| endPointName | LPCWSTR | in | 診断接続に使用するエンドポイント名。 |
| pid | DWORD | in | 診断対象となるプロセスのID。 |
| wszDllXamlDiagnostics | LPCWSTR | in | XAML診断DLLのパス。 |
| wszTAPDllName | LPCWSTR | in | ロードするTAP(Test Access Provider)DLLの名前。 |
| tapClsid | GUID | in | TAPコンポーネントのCLSIDを示すGUID。 |
| wszInitializationData | LPCWSTR | in | TAPへ渡す初期化データ文字列。NULL可。 |
戻り値の型: HRESULT
各言語での呼び出し定義
// Windows.UI.Xaml.dll
#include <windows.h>
HRESULT InitializeXamlDiagnosticsEx(
LPCWSTR endPointName,
DWORD pid,
LPCWSTR wszDllXamlDiagnostics,
LPCWSTR wszTAPDllName,
GUID tapClsid,
LPCWSTR wszInitializationData
);[DllImport("Windows.UI.Xaml.dll", ExactSpelling = true)]
static extern int InitializeXamlDiagnosticsEx(
[MarshalAs(UnmanagedType.LPWStr)] string endPointName, // LPCWSTR
uint pid, // DWORD
[MarshalAs(UnmanagedType.LPWStr)] string wszDllXamlDiagnostics, // LPCWSTR
[MarshalAs(UnmanagedType.LPWStr)] string wszTAPDllName, // LPCWSTR
Guid tapClsid, // GUID
[MarshalAs(UnmanagedType.LPWStr)] string wszInitializationData // LPCWSTR
);<DllImport("Windows.UI.Xaml.dll", ExactSpelling:=True)>
Public Shared Function InitializeXamlDiagnosticsEx(
<MarshalAs(UnmanagedType.LPWStr)> endPointName As String, ' LPCWSTR
pid As UInteger, ' DWORD
<MarshalAs(UnmanagedType.LPWStr)> wszDllXamlDiagnostics As String, ' LPCWSTR
<MarshalAs(UnmanagedType.LPWStr)> wszTAPDllName As String, ' LPCWSTR
tapClsid As Guid, ' GUID
<MarshalAs(UnmanagedType.LPWStr)> wszInitializationData As String ' LPCWSTR
) As Integer
End Function' endPointName : LPCWSTR
' pid : DWORD
' wszDllXamlDiagnostics : LPCWSTR
' wszTAPDllName : LPCWSTR
' tapClsid : GUID
' wszInitializationData : LPCWSTR
Declare PtrSafe Function InitializeXamlDiagnosticsEx Lib "windows.ui.xaml" ( _
ByVal endPointName As LongPtr, _
ByVal pid As Long, _
ByVal wszDllXamlDiagnostics As LongPtr, _
ByVal wszTAPDllName As LongPtr, _
ByVal tapClsid As LongPtr, _
ByVal wszInitializationData As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
InitializeXamlDiagnosticsEx = ctypes.windll.LoadLibrary("Windows.UI.Xaml.dll").InitializeXamlDiagnosticsEx
InitializeXamlDiagnosticsEx.restype = ctypes.c_int
InitializeXamlDiagnosticsEx.argtypes = [
wintypes.LPCWSTR, # endPointName : LPCWSTR
wintypes.DWORD, # pid : DWORD
wintypes.LPCWSTR, # wszDllXamlDiagnostics : LPCWSTR
wintypes.LPCWSTR, # wszTAPDllName : LPCWSTR
ctypes.c_void_p, # tapClsid : GUID
wintypes.LPCWSTR, # wszInitializationData : LPCWSTR
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('Windows.UI.Xaml.dll')
InitializeXamlDiagnosticsEx = Fiddle::Function.new(
lib['InitializeXamlDiagnosticsEx'],
[
Fiddle::TYPE_VOIDP, # endPointName : LPCWSTR
-Fiddle::TYPE_INT, # pid : DWORD
Fiddle::TYPE_VOIDP, # wszDllXamlDiagnostics : LPCWSTR
Fiddle::TYPE_VOIDP, # wszTAPDllName : LPCWSTR
Fiddle::TYPE_VOIDP, # tapClsid : GUID
Fiddle::TYPE_VOIDP, # wszInitializationData : LPCWSTR
],
Fiddle::TYPE_INT)#[link(name = "windows.ui.xaml")]
extern "system" {
fn InitializeXamlDiagnosticsEx(
endPointName: *const u16, // LPCWSTR
pid: u32, // DWORD
wszDllXamlDiagnostics: *const u16, // LPCWSTR
wszTAPDllName: *const u16, // LPCWSTR
tapClsid: GUID, // GUID
wszInitializationData: *const u16 // LPCWSTR
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("Windows.UI.Xaml.dll")]
public static extern int InitializeXamlDiagnosticsEx([MarshalAs(UnmanagedType.LPWStr)] string endPointName, uint pid, [MarshalAs(UnmanagedType.LPWStr)] string wszDllXamlDiagnostics, [MarshalAs(UnmanagedType.LPWStr)] string wszTAPDllName, Guid tapClsid, [MarshalAs(UnmanagedType.LPWStr)] string wszInitializationData);
"@
$api = Add-Type -MemberDefinition $sig -Name 'Windows.UI.Xaml_InitializeXamlDiagnosticsEx' -Namespace Win32 -PassThru
# $api::InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)#uselib "Windows.UI.Xaml.dll"
#func global InitializeXamlDiagnosticsEx "InitializeXamlDiagnosticsEx" sptr, sptr, sptr, sptr, sptr, sptr
; InitializeXamlDiagnosticsEx endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData ; 戻り値は stat
; endPointName : LPCWSTR -> "sptr"
; pid : DWORD -> "sptr"
; wszDllXamlDiagnostics : LPCWSTR -> "sptr"
; wszTAPDllName : LPCWSTR -> "sptr"
; tapClsid : GUID -> "sptr"
; wszInitializationData : LPCWSTR -> "sptr"
; ※値渡し構造体は直接渡せません。intにパック、または var で構造体変数を渡してください。
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "Windows.UI.Xaml.dll"
#cfunc global InitializeXamlDiagnosticsEx "InitializeXamlDiagnosticsEx" wstr, int, wstr, wstr, int, wstr
; res = InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
; endPointName : LPCWSTR -> "wstr"
; pid : DWORD -> "int"
; wszDllXamlDiagnostics : LPCWSTR -> "wstr"
; wszTAPDllName : LPCWSTR -> "wstr"
; tapClsid : GUID -> "int"
; wszInitializationData : LPCWSTR -> "wstr"
; ※値渡し構造体は直接渡せません。intにパック、または var で構造体変数を渡してください。; HRESULT InitializeXamlDiagnosticsEx(LPCWSTR endPointName, DWORD pid, LPCWSTR wszDllXamlDiagnostics, LPCWSTR wszTAPDllName, GUID tapClsid, LPCWSTR wszInitializationData)
#uselib "Windows.UI.Xaml.dll"
#cfunc global InitializeXamlDiagnosticsEx "InitializeXamlDiagnosticsEx" wstr, int, wstr, wstr, int, wstr
; res = InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
; endPointName : LPCWSTR -> "wstr"
; pid : DWORD -> "int"
; wszDllXamlDiagnostics : LPCWSTR -> "wstr"
; wszTAPDllName : LPCWSTR -> "wstr"
; tapClsid : GUID -> "int"
; wszInitializationData : LPCWSTR -> "wstr"
; ※値渡し構造体は直接渡せません。intにパック、または var で構造体変数を渡してください。import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
windows_ui_xaml = windows.NewLazySystemDLL("Windows.UI.Xaml.dll")
procInitializeXamlDiagnosticsEx = windows_ui_xaml.NewProc("InitializeXamlDiagnosticsEx")
)
// endPointName (LPCWSTR), pid (DWORD), wszDllXamlDiagnostics (LPCWSTR), wszTAPDllName (LPCWSTR), tapClsid (GUID), wszInitializationData (LPCWSTR)
r1, _, err := procInitializeXamlDiagnosticsEx.Call(
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(endPointName))),
uintptr(pid),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszDllXamlDiagnostics))),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszTAPDllName))),
uintptr(tapClsid),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszInitializationData))),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction InitializeXamlDiagnosticsEx(
endPointName: PWideChar; // LPCWSTR
pid: DWORD; // DWORD
wszDllXamlDiagnostics: PWideChar; // LPCWSTR
wszTAPDllName: PWideChar; // LPCWSTR
tapClsid: TGUID; // GUID
wszInitializationData: PWideChar // LPCWSTR
): Integer; stdcall;
external 'Windows.UI.Xaml.dll' name 'InitializeXamlDiagnosticsEx';result := DllCall("Windows.UI.Xaml\InitializeXamlDiagnosticsEx"
, "WStr", endPointName ; LPCWSTR
, "UInt", pid ; DWORD
, "WStr", wszDllXamlDiagnostics ; LPCWSTR
, "WStr", wszTAPDllName ; LPCWSTR
, "Ptr", tapClsid ; GUID
, "WStr", wszInitializationData ; LPCWSTR
, "Int") ; return: HRESULT●InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData) = DLL("Windows.UI.Xaml.dll", "int InitializeXamlDiagnosticsEx(char*, dword, char*, char*, void*, char*)")
# 呼び出し: InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
# endPointName : LPCWSTR -> "char*"
# pid : DWORD -> "dword"
# wszDllXamlDiagnostics : LPCWSTR -> "char*"
# wszTAPDllName : LPCWSTR -> "char*"
# tapClsid : GUID -> "void*"
# wszInitializationData : LPCWSTR -> "char*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "windows.ui.xaml" fn InitializeXamlDiagnosticsEx(
endPointName: [*c]const u16, // LPCWSTR
pid: u32, // DWORD
wszDllXamlDiagnostics: [*c]const u16, // LPCWSTR
wszTAPDllName: [*c]const u16, // LPCWSTR
tapClsid: GUID, // GUID
wszInitializationData: [*c]const u16 // LPCWSTR
) callconv(std.os.windows.WINAPI) i32;proc InitializeXamlDiagnosticsEx(
endPointName: WideCString, # LPCWSTR
pid: uint32, # DWORD
wszDllXamlDiagnostics: WideCString, # LPCWSTR
wszTAPDllName: WideCString, # LPCWSTR
tapClsid: GUID, # GUID
wszInitializationData: WideCString # LPCWSTR
): int32 {.importc: "InitializeXamlDiagnosticsEx", stdcall, dynlib: "Windows.UI.Xaml.dll".}pragma(lib, "windows.ui.xaml");
extern(Windows)
int InitializeXamlDiagnosticsEx(
const(wchar)* endPointName, // LPCWSTR
uint pid, // DWORD
const(wchar)* wszDllXamlDiagnostics, // LPCWSTR
const(wchar)* wszTAPDllName, // LPCWSTR
GUID tapClsid, // GUID
const(wchar)* wszInitializationData // LPCWSTR
);ccall((:InitializeXamlDiagnosticsEx, "Windows.UI.Xaml.dll"), stdcall, Int32,
(Cwstring, UInt32, Cwstring, Cwstring, GUID, Cwstring),
endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
# endPointName : LPCWSTR -> Cwstring
# pid : DWORD -> UInt32
# wszDllXamlDiagnostics : LPCWSTR -> Cwstring
# wszTAPDllName : LPCWSTR -> Cwstring
# tapClsid : GUID -> GUID
# wszInitializationData : LPCWSTR -> Cwstring
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
int32_t InitializeXamlDiagnosticsEx(
const uint16_t* endPointName,
uint32_t pid,
const uint16_t* wszDllXamlDiagnostics,
const uint16_t* wszTAPDllName,
GUID tapClsid,
const uint16_t* wszInitializationData);
]]
local windows.ui.xaml = ffi.load("windows.ui.xaml")
-- windows.ui.xaml.InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
-- endPointName : LPCWSTR
-- pid : DWORD
-- wszDllXamlDiagnostics : LPCWSTR
-- wszTAPDllName : LPCWSTR
-- tapClsid : GUID
-- wszInitializationData : LPCWSTR
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('Windows.UI.Xaml.dll');
const InitializeXamlDiagnosticsEx = lib.func('__stdcall', 'InitializeXamlDiagnosticsEx', 'int32_t', ['str16', 'uint32_t', 'str16', 'str16', 'void *', 'str16']);
// InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
// endPointName : LPCWSTR -> 'str16'
// pid : DWORD -> 'uint32_t'
// wszDllXamlDiagnostics : LPCWSTR -> 'str16'
// wszTAPDllName : LPCWSTR -> 'str16'
// tapClsid : GUID -> 'void *'
// wszInitializationData : LPCWSTR -> 'str16'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("Windows.UI.Xaml.dll", {
InitializeXamlDiagnosticsEx: { parameters: ["buffer", "u32", "buffer", "buffer", "pointer", "buffer"], result: "i32" },
});
// lib.symbols.InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData)
// endPointName : LPCWSTR -> "buffer"
// pid : DWORD -> "u32"
// wszDllXamlDiagnostics : LPCWSTR -> "buffer"
// wszTAPDllName : LPCWSTR -> "buffer"
// tapClsid : GUID -> "pointer"
// wszInitializationData : LPCWSTR -> "buffer"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t InitializeXamlDiagnosticsEx(
const uint16_t* endPointName,
uint32_t pid,
const uint16_t* wszDllXamlDiagnostics,
const uint16_t* wszTAPDllName,
GUID tapClsid,
const uint16_t* wszInitializationData);
C, "Windows.UI.Xaml.dll");
// $ffi->InitializeXamlDiagnosticsEx(endPointName, pid, wszDllXamlDiagnostics, wszTAPDllName, tapClsid, wszInitializationData);
// endPointName : LPCWSTR
// pid : DWORD
// wszDllXamlDiagnostics : LPCWSTR
// wszTAPDllName : LPCWSTR
// tapClsid : GUID
// wszInitializationData : LPCWSTR
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface Windows.ui.xaml extends StdCallLibrary {
Windows.ui.xaml INSTANCE = Native.load("windows.ui.xaml", Windows.ui.xaml.class);
int InitializeXamlDiagnosticsEx(
WString endPointName, // LPCWSTR
int pid, // DWORD
WString wszDllXamlDiagnostics, // LPCWSTR
WString wszTAPDllName, // LPCWSTR
Pointer tapClsid, // GUID
WString wszInitializationData // LPCWSTR
);
}@[Link("windows.ui.xaml")]
lib LibWindows.UI.Xaml
fun InitializeXamlDiagnosticsEx = InitializeXamlDiagnosticsEx(
endPointName : UInt16*, # LPCWSTR
pid : UInt32, # DWORD
wszDllXamlDiagnostics : UInt16*, # LPCWSTR
wszTAPDllName : UInt16*, # LPCWSTR
tapClsid : GUID, # GUID
wszInitializationData : UInt16* # LPCWSTR
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef InitializeXamlDiagnosticsExNative = Int32 Function(Pointer<Utf16>, Uint32, Pointer<Utf16>, Pointer<Utf16>, Pointer<Void>, Pointer<Utf16>);
typedef InitializeXamlDiagnosticsExDart = int Function(Pointer<Utf16>, int, Pointer<Utf16>, Pointer<Utf16>, Pointer<Void>, Pointer<Utf16>);
final InitializeXamlDiagnosticsEx = DynamicLibrary.open('Windows.UI.Xaml.dll')
.lookupFunction<InitializeXamlDiagnosticsExNative, InitializeXamlDiagnosticsExDart>('InitializeXamlDiagnosticsEx');
// endPointName : LPCWSTR -> Pointer<Utf16>
// pid : DWORD -> Uint32
// wszDllXamlDiagnostics : LPCWSTR -> Pointer<Utf16>
// wszTAPDllName : LPCWSTR -> Pointer<Utf16>
// tapClsid : GUID -> Pointer<Void>
// wszInitializationData : LPCWSTR -> Pointer<Utf16>
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function InitializeXamlDiagnosticsEx(
endPointName: PWideChar; // LPCWSTR
pid: DWORD; // DWORD
wszDllXamlDiagnostics: PWideChar; // LPCWSTR
wszTAPDllName: PWideChar; // LPCWSTR
tapClsid: TGUID; // GUID
wszInitializationData: PWideChar // LPCWSTR
): Integer; stdcall;
external 'Windows.UI.Xaml.dll' name 'InitializeXamlDiagnosticsEx';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "InitializeXamlDiagnosticsEx"
c_InitializeXamlDiagnosticsEx :: CWString -> Word32 -> CWString -> CWString -> Ptr () -> CWString -> IO Int32
-- endPointName : LPCWSTR -> CWString
-- pid : DWORD -> Word32
-- wszDllXamlDiagnostics : LPCWSTR -> CWString
-- wszTAPDllName : LPCWSTR -> CWString
-- tapClsid : GUID -> Ptr ()
-- wszInitializationData : LPCWSTR -> CWString
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。
-- ※値渡し構造体は GHC FFI で直接渡せません。Ptr で渡すラッパ(C側)経由にしてください。open Ctypes
open Foreign
let initializexamldiagnosticsex =
foreign "InitializeXamlDiagnosticsEx"
((ptr uint16_t) @-> uint32_t @-> (ptr uint16_t) @-> (ptr uint16_t) @-> (ptr void) @-> (ptr uint16_t) @-> returning int32_t)
(* endPointName : LPCWSTR -> (ptr uint16_t) *)
(* pid : DWORD -> uint32_t *)
(* wszDllXamlDiagnostics : LPCWSTR -> (ptr uint16_t) *)
(* wszTAPDllName : LPCWSTR -> (ptr uint16_t) *)
(* tapClsid : GUID -> (ptr void) *)
(* wszInitializationData : LPCWSTR -> (ptr uint16_t) *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library windows.ui.xaml (t "Windows.UI.Xaml.dll"))
(cffi:use-foreign-library windows.ui.xaml)
(cffi:defcfun ("InitializeXamlDiagnosticsEx" initialize-xaml-diagnostics-ex :convention :stdcall) :int32
(end-point-name (:string :encoding :utf-16le)) ; LPCWSTR
(pid :uint32) ; DWORD
(wsz-dll-xaml-diagnostics (:string :encoding :utf-16le)) ; LPCWSTR
(wsz-tapdll-name (:string :encoding :utf-16le)) ; LPCWSTR
(tap-clsid :pointer) ; GUID
(wsz-initialization-data (:string :encoding :utf-16le))) ; LPCWSTR
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $InitializeXamlDiagnosticsEx = Win32::API::More->new('Windows.UI.Xaml',
'int InitializeXamlDiagnosticsEx(LPCWSTR endPointName, DWORD pid, LPCWSTR wszDllXamlDiagnostics, LPCWSTR wszTAPDllName, LPVOID tapClsid, LPCWSTR wszInitializationData)');
# my $ret = $InitializeXamlDiagnosticsEx->Call($endPointName, $pid, $wszDllXamlDiagnostics, $wszTAPDllName, $tapClsid, $wszInitializationData);
# endPointName : LPCWSTR -> LPCWSTR
# pid : DWORD -> DWORD
# wszDllXamlDiagnostics : LPCWSTR -> LPCWSTR
# wszTAPDllName : LPCWSTR -> LPCWSTR
# tapClsid : GUID -> LPVOID
# wszInitializationData : LPCWSTR -> LPCWSTR
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。