ホーム › System.Rpc › NdrMesTypeEncode3
NdrMesTypeEncode3
関数プロキシ情報を用いて型データをエンコードする。
シグネチャ
// RPCRT4.dll
#include <windows.h>
void NdrMesTypeEncode3(
void* Handle,
const MIDL_TYPE_PICKLING_INFO* pPicklingInfo,
const MIDL_STUBLESS_PROXY_INFO* pProxyInfo,
const DWORD** ArrTypeOffset,
DWORD nTypeIndex,
const void* pObject
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| Handle | void* | inout |
| pPicklingInfo | MIDL_TYPE_PICKLING_INFO* | in |
| pProxyInfo | MIDL_STUBLESS_PROXY_INFO* | in |
| ArrTypeOffset | DWORD** | in |
| nTypeIndex | DWORD | in |
| pObject | void* | in |
戻り値の型: void
各言語での呼び出し定義
// RPCRT4.dll
#include <windows.h>
void NdrMesTypeEncode3(
void* Handle,
const MIDL_TYPE_PICKLING_INFO* pPicklingInfo,
const MIDL_STUBLESS_PROXY_INFO* pProxyInfo,
const DWORD** ArrTypeOffset,
DWORD nTypeIndex,
const void* pObject
);[DllImport("RPCRT4.dll", ExactSpelling = true)]
static extern void NdrMesTypeEncode3(
IntPtr Handle, // void* in/out
IntPtr pPicklingInfo, // MIDL_TYPE_PICKLING_INFO*
IntPtr pProxyInfo, // MIDL_STUBLESS_PROXY_INFO*
IntPtr ArrTypeOffset, // DWORD**
uint nTypeIndex, // DWORD
IntPtr pObject // void*
);<DllImport("RPCRT4.dll", ExactSpelling:=True)>
Public Shared Sub NdrMesTypeEncode3(
Handle As IntPtr, ' void* in/out
pPicklingInfo As IntPtr, ' MIDL_TYPE_PICKLING_INFO*
pProxyInfo As IntPtr, ' MIDL_STUBLESS_PROXY_INFO*
ArrTypeOffset As IntPtr, ' DWORD**
nTypeIndex As UInteger, ' DWORD
pObject As IntPtr ' void*
)
End Sub' Handle : void* in/out
' pPicklingInfo : MIDL_TYPE_PICKLING_INFO*
' pProxyInfo : MIDL_STUBLESS_PROXY_INFO*
' ArrTypeOffset : DWORD**
' nTypeIndex : DWORD
' pObject : void*
Declare PtrSafe Sub NdrMesTypeEncode3 Lib "rpcrt4" ( _
ByVal Handle As LongPtr, _
ByVal pPicklingInfo As LongPtr, _
ByVal pProxyInfo As LongPtr, _
ByVal ArrTypeOffset As LongPtr, _
ByVal nTypeIndex As Long, _
ByVal pObject As LongPtr)
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
NdrMesTypeEncode3 = ctypes.windll.rpcrt4.NdrMesTypeEncode3
NdrMesTypeEncode3.restype = None
NdrMesTypeEncode3.argtypes = [
ctypes.POINTER(None), # Handle : void* in/out
ctypes.c_void_p, # pPicklingInfo : MIDL_TYPE_PICKLING_INFO*
ctypes.c_void_p, # pProxyInfo : MIDL_STUBLESS_PROXY_INFO*
ctypes.c_void_p, # ArrTypeOffset : DWORD**
wintypes.DWORD, # nTypeIndex : DWORD
ctypes.POINTER(None), # pObject : void*
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('RPCRT4.dll')
NdrMesTypeEncode3 = Fiddle::Function.new(
lib['NdrMesTypeEncode3'],
[
Fiddle::TYPE_VOIDP, # Handle : void* in/out
Fiddle::TYPE_VOIDP, # pPicklingInfo : MIDL_TYPE_PICKLING_INFO*
Fiddle::TYPE_VOIDP, # pProxyInfo : MIDL_STUBLESS_PROXY_INFO*
Fiddle::TYPE_VOIDP, # ArrTypeOffset : DWORD**
-Fiddle::TYPE_INT, # nTypeIndex : DWORD
Fiddle::TYPE_VOIDP, # pObject : void*
],
Fiddle::TYPE_VOID)#[link(name = "rpcrt4")]
extern "system" {
fn NdrMesTypeEncode3(
Handle: *mut (), // void* in/out
pPicklingInfo: *const MIDL_TYPE_PICKLING_INFO, // MIDL_TYPE_PICKLING_INFO*
pProxyInfo: *const MIDL_STUBLESS_PROXY_INFO, // MIDL_STUBLESS_PROXY_INFO*
ArrTypeOffset: *const *const u32, // DWORD**
nTypeIndex: u32, // DWORD
pObject: *const () // void*
);
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("RPCRT4.dll")]
public static extern void NdrMesTypeEncode3(IntPtr Handle, IntPtr pPicklingInfo, IntPtr pProxyInfo, IntPtr ArrTypeOffset, uint nTypeIndex, IntPtr pObject);
"@
$api = Add-Type -MemberDefinition $sig -Name 'RPCRT4_NdrMesTypeEncode3' -Namespace Win32 -PassThru
# $api::NdrMesTypeEncode3(Handle, pPicklingInfo, pProxyInfo, ArrTypeOffset, nTypeIndex, pObject)#uselib "RPCRT4.dll"
#func global NdrMesTypeEncode3 "NdrMesTypeEncode3" sptr, sptr, sptr, sptr, sptr, sptr
; NdrMesTypeEncode3 Handle, varptr(pPicklingInfo), varptr(pProxyInfo), varptr(ArrTypeOffset), nTypeIndex, pObject
; Handle : void* in/out -> "sptr"
; pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "sptr"
; pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "sptr"
; ArrTypeOffset : DWORD** -> "sptr"
; nTypeIndex : DWORD -> "sptr"
; pObject : void* -> "sptr"出力引数:
#uselib "RPCRT4.dll" #func global NdrMesTypeEncode3 "NdrMesTypeEncode3" sptr, var, var, var, int, sptr ; NdrMesTypeEncode3 Handle, pPicklingInfo, pProxyInfo, ArrTypeOffset, nTypeIndex, pObject ; Handle : void* in/out -> "sptr" ; pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "var" ; pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "var" ; ArrTypeOffset : DWORD** -> "var" ; nTypeIndex : DWORD -> "int" ; pObject : void* -> "sptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "RPCRT4.dll" #func global NdrMesTypeEncode3 "NdrMesTypeEncode3" sptr, sptr, sptr, sptr, int, sptr ; NdrMesTypeEncode3 Handle, varptr(pPicklingInfo), varptr(pProxyInfo), varptr(ArrTypeOffset), nTypeIndex, pObject ; Handle : void* in/out -> "sptr" ; pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "sptr" ; pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "sptr" ; ArrTypeOffset : DWORD** -> "sptr" ; nTypeIndex : DWORD -> "int" ; pObject : void* -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; void NdrMesTypeEncode3(void* Handle, MIDL_TYPE_PICKLING_INFO* pPicklingInfo, MIDL_STUBLESS_PROXY_INFO* pProxyInfo, DWORD** ArrTypeOffset, DWORD nTypeIndex, void* pObject) #uselib "RPCRT4.dll" #func global NdrMesTypeEncode3 "NdrMesTypeEncode3" intptr, var, var, var, int, intptr ; NdrMesTypeEncode3 Handle, pPicklingInfo, pProxyInfo, ArrTypeOffset, nTypeIndex, pObject ; Handle : void* in/out -> "intptr" ; pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "var" ; pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "var" ; ArrTypeOffset : DWORD** -> "var" ; nTypeIndex : DWORD -> "int" ; pObject : void* -> "intptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; void NdrMesTypeEncode3(void* Handle, MIDL_TYPE_PICKLING_INFO* pPicklingInfo, MIDL_STUBLESS_PROXY_INFO* pProxyInfo, DWORD** ArrTypeOffset, DWORD nTypeIndex, void* pObject) #uselib "RPCRT4.dll" #func global NdrMesTypeEncode3 "NdrMesTypeEncode3" intptr, intptr, intptr, intptr, int, intptr ; NdrMesTypeEncode3 Handle, varptr(pPicklingInfo), varptr(pProxyInfo), varptr(ArrTypeOffset), nTypeIndex, pObject ; Handle : void* in/out -> "intptr" ; pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "intptr" ; pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "intptr" ; ArrTypeOffset : DWORD** -> "intptr" ; nTypeIndex : DWORD -> "int" ; pObject : void* -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
rpcrt4 = windows.NewLazySystemDLL("RPCRT4.dll")
procNdrMesTypeEncode3 = rpcrt4.NewProc("NdrMesTypeEncode3")
)
// Handle (void* in/out), pPicklingInfo (MIDL_TYPE_PICKLING_INFO*), pProxyInfo (MIDL_STUBLESS_PROXY_INFO*), ArrTypeOffset (DWORD**), nTypeIndex (DWORD), pObject (void*)
r1, _, err := procNdrMesTypeEncode3.Call(
uintptr(Handle),
uintptr(pPicklingInfo),
uintptr(pProxyInfo),
uintptr(ArrTypeOffset),
uintptr(nTypeIndex),
uintptr(pObject),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // voidprocedure NdrMesTypeEncode3(
Handle: Pointer; // void* in/out
pPicklingInfo: Pointer; // MIDL_TYPE_PICKLING_INFO*
pProxyInfo: Pointer; // MIDL_STUBLESS_PROXY_INFO*
ArrTypeOffset: Pointer; // DWORD**
nTypeIndex: DWORD; // DWORD
pObject: Pointer // void*
); stdcall;
external 'RPCRT4.dll' name 'NdrMesTypeEncode3';result := DllCall("RPCRT4\NdrMesTypeEncode3"
, "Ptr", Handle ; void* in/out
, "Ptr", pPicklingInfo ; MIDL_TYPE_PICKLING_INFO*
, "Ptr", pProxyInfo ; MIDL_STUBLESS_PROXY_INFO*
, "Ptr", ArrTypeOffset ; DWORD**
, "UInt", nTypeIndex ; DWORD
, "Ptr", pObject ; void*
, "Int") ; return: void●NdrMesTypeEncode3(Handle, pPicklingInfo, pProxyInfo, ArrTypeOffset, nTypeIndex, pObject) = DLL("RPCRT4.dll", "int NdrMesTypeEncode3(void*, void*, void*, void*, dword, void*)")
# 呼び出し: NdrMesTypeEncode3(Handle, pPicklingInfo, pProxyInfo, ArrTypeOffset, nTypeIndex, pObject)
# Handle : void* in/out -> "void*"
# pPicklingInfo : MIDL_TYPE_PICKLING_INFO* -> "void*"
# pProxyInfo : MIDL_STUBLESS_PROXY_INFO* -> "void*"
# ArrTypeOffset : DWORD** -> "void*"
# nTypeIndex : DWORD -> "dword"
# pObject : void* -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。