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