ホーム › NetworkManagement.Rras › MprConfigInterfaceGetInfo
MprConfigInterfaceGetInfo
関数ルーター構成内のインターフェイスの情報を取得する。
シグネチャ
// MPRAPI.dll
#include <windows.h>
DWORD MprConfigInterfaceGetInfo(
HANDLE hMprConfig,
HANDLE hRouterInterface,
DWORD dwLevel,
BYTE** lplpBuffer,
DWORD* lpdwBufferSize
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| hMprConfig | HANDLE | in |
| hRouterInterface | HANDLE | in |
| dwLevel | DWORD | in |
| lplpBuffer | BYTE** | inout |
| lpdwBufferSize | DWORD* | out |
戻り値の型: DWORD
各言語での呼び出し定義
// MPRAPI.dll
#include <windows.h>
DWORD MprConfigInterfaceGetInfo(
HANDLE hMprConfig,
HANDLE hRouterInterface,
DWORD dwLevel,
BYTE** lplpBuffer,
DWORD* lpdwBufferSize
);[DllImport("MPRAPI.dll", ExactSpelling = true)]
static extern uint MprConfigInterfaceGetInfo(
IntPtr hMprConfig, // HANDLE
IntPtr hRouterInterface, // HANDLE
uint dwLevel, // DWORD
IntPtr lplpBuffer, // BYTE** in/out
out uint lpdwBufferSize // DWORD* out
);<DllImport("MPRAPI.dll", ExactSpelling:=True)>
Public Shared Function MprConfigInterfaceGetInfo(
hMprConfig As IntPtr, ' HANDLE
hRouterInterface As IntPtr, ' HANDLE
dwLevel As UInteger, ' DWORD
lplpBuffer As IntPtr, ' BYTE** in/out
<Out> ByRef lpdwBufferSize As UInteger ' DWORD* out
) As UInteger
End Function' hMprConfig : HANDLE
' hRouterInterface : HANDLE
' dwLevel : DWORD
' lplpBuffer : BYTE** in/out
' lpdwBufferSize : DWORD* out
Declare PtrSafe Function MprConfigInterfaceGetInfo Lib "mprapi" ( _
ByVal hMprConfig As LongPtr, _
ByVal hRouterInterface As LongPtr, _
ByVal dwLevel As Long, _
ByVal lplpBuffer As LongPtr, _
ByRef lpdwBufferSize As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
MprConfigInterfaceGetInfo = ctypes.windll.mprapi.MprConfigInterfaceGetInfo
MprConfigInterfaceGetInfo.restype = wintypes.DWORD
MprConfigInterfaceGetInfo.argtypes = [
wintypes.HANDLE, # hMprConfig : HANDLE
wintypes.HANDLE, # hRouterInterface : HANDLE
wintypes.DWORD, # dwLevel : DWORD
ctypes.c_void_p, # lplpBuffer : BYTE** in/out
ctypes.POINTER(wintypes.DWORD), # lpdwBufferSize : DWORD* out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('MPRAPI.dll')
MprConfigInterfaceGetInfo = Fiddle::Function.new(
lib['MprConfigInterfaceGetInfo'],
[
Fiddle::TYPE_VOIDP, # hMprConfig : HANDLE
Fiddle::TYPE_VOIDP, # hRouterInterface : HANDLE
-Fiddle::TYPE_INT, # dwLevel : DWORD
Fiddle::TYPE_VOIDP, # lplpBuffer : BYTE** in/out
Fiddle::TYPE_VOIDP, # lpdwBufferSize : DWORD* out
],
-Fiddle::TYPE_INT)#[link(name = "mprapi")]
extern "system" {
fn MprConfigInterfaceGetInfo(
hMprConfig: *mut core::ffi::c_void, // HANDLE
hRouterInterface: *mut core::ffi::c_void, // HANDLE
dwLevel: u32, // DWORD
lplpBuffer: *mut *mut u8, // BYTE** in/out
lpdwBufferSize: *mut u32 // DWORD* out
) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("MPRAPI.dll")]
public static extern uint MprConfigInterfaceGetInfo(IntPtr hMprConfig, IntPtr hRouterInterface, uint dwLevel, IntPtr lplpBuffer, out uint lpdwBufferSize);
"@
$api = Add-Type -MemberDefinition $sig -Name 'MPRAPI_MprConfigInterfaceGetInfo' -Namespace Win32 -PassThru
# $api::MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, lplpBuffer, lpdwBufferSize)#uselib "MPRAPI.dll"
#func global MprConfigInterfaceGetInfo "MprConfigInterfaceGetInfo" sptr, sptr, sptr, sptr, sptr
; MprConfigInterfaceGetInfo hMprConfig, hRouterInterface, dwLevel, varptr(lplpBuffer), varptr(lpdwBufferSize) ; 戻り値は stat
; hMprConfig : HANDLE -> "sptr"
; hRouterInterface : HANDLE -> "sptr"
; dwLevel : DWORD -> "sptr"
; lplpBuffer : BYTE** in/out -> "sptr"
; lpdwBufferSize : DWORD* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "MPRAPI.dll" #cfunc global MprConfigInterfaceGetInfo "MprConfigInterfaceGetInfo" sptr, sptr, int, var, var ; res = MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, lplpBuffer, lpdwBufferSize) ; hMprConfig : HANDLE -> "sptr" ; hRouterInterface : HANDLE -> "sptr" ; dwLevel : DWORD -> "int" ; lplpBuffer : BYTE** in/out -> "var" ; lpdwBufferSize : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "MPRAPI.dll" #cfunc global MprConfigInterfaceGetInfo "MprConfigInterfaceGetInfo" sptr, sptr, int, sptr, sptr ; res = MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, varptr(lplpBuffer), varptr(lpdwBufferSize)) ; hMprConfig : HANDLE -> "sptr" ; hRouterInterface : HANDLE -> "sptr" ; dwLevel : DWORD -> "int" ; lplpBuffer : BYTE** in/out -> "sptr" ; lpdwBufferSize : DWORD* out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; DWORD MprConfigInterfaceGetInfo(HANDLE hMprConfig, HANDLE hRouterInterface, DWORD dwLevel, BYTE** lplpBuffer, DWORD* lpdwBufferSize) #uselib "MPRAPI.dll" #cfunc global MprConfigInterfaceGetInfo "MprConfigInterfaceGetInfo" intptr, intptr, int, var, var ; res = MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, lplpBuffer, lpdwBufferSize) ; hMprConfig : HANDLE -> "intptr" ; hRouterInterface : HANDLE -> "intptr" ; dwLevel : DWORD -> "int" ; lplpBuffer : BYTE** in/out -> "var" ; lpdwBufferSize : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; DWORD MprConfigInterfaceGetInfo(HANDLE hMprConfig, HANDLE hRouterInterface, DWORD dwLevel, BYTE** lplpBuffer, DWORD* lpdwBufferSize) #uselib "MPRAPI.dll" #cfunc global MprConfigInterfaceGetInfo "MprConfigInterfaceGetInfo" intptr, intptr, int, intptr, intptr ; res = MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, varptr(lplpBuffer), varptr(lpdwBufferSize)) ; hMprConfig : HANDLE -> "intptr" ; hRouterInterface : HANDLE -> "intptr" ; dwLevel : DWORD -> "int" ; lplpBuffer : BYTE** in/out -> "intptr" ; lpdwBufferSize : DWORD* out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
mprapi = windows.NewLazySystemDLL("MPRAPI.dll")
procMprConfigInterfaceGetInfo = mprapi.NewProc("MprConfigInterfaceGetInfo")
)
// hMprConfig (HANDLE), hRouterInterface (HANDLE), dwLevel (DWORD), lplpBuffer (BYTE** in/out), lpdwBufferSize (DWORD* out)
r1, _, err := procMprConfigInterfaceGetInfo.Call(
uintptr(hMprConfig),
uintptr(hRouterInterface),
uintptr(dwLevel),
uintptr(lplpBuffer),
uintptr(lpdwBufferSize),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // DWORDfunction MprConfigInterfaceGetInfo(
hMprConfig: THandle; // HANDLE
hRouterInterface: THandle; // HANDLE
dwLevel: DWORD; // DWORD
lplpBuffer: Pointer; // BYTE** in/out
lpdwBufferSize: Pointer // DWORD* out
): DWORD; stdcall;
external 'MPRAPI.dll' name 'MprConfigInterfaceGetInfo';result := DllCall("MPRAPI\MprConfigInterfaceGetInfo"
, "Ptr", hMprConfig ; HANDLE
, "Ptr", hRouterInterface ; HANDLE
, "UInt", dwLevel ; DWORD
, "Ptr", lplpBuffer ; BYTE** in/out
, "Ptr", lpdwBufferSize ; DWORD* out
, "UInt") ; return: DWORD●MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, lplpBuffer, lpdwBufferSize) = DLL("MPRAPI.dll", "dword MprConfigInterfaceGetInfo(void*, void*, dword, void*, void*)")
# 呼び出し: MprConfigInterfaceGetInfo(hMprConfig, hRouterInterface, dwLevel, lplpBuffer, lpdwBufferSize)
# hMprConfig : HANDLE -> "void*"
# hRouterInterface : HANDLE -> "void*"
# dwLevel : DWORD -> "dword"
# lplpBuffer : BYTE** in/out -> "void*"
# lpdwBufferSize : DWORD* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。