ホーム › NetworkManagement.NetManagement › NetErrorLogRead
NetErrorLogRead
関数サーバーのエラーログから記録されたエントリを読み取る。
シグネチャ
// NETAPI32.dll
#include <windows.h>
DWORD NetErrorLogRead(
LPCWSTR UncServerName, // optional
LPWSTR Reserved1, // optional
HLOG* ErrorLogHandle,
DWORD Offset,
DWORD* Reserved2, // optional
DWORD Reserved3,
DWORD OffsetFlag,
BYTE** BufPtr,
DWORD PrefMaxSize,
DWORD* BytesRead,
DWORD* TotalAvailable
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| UncServerName | LPCWSTR | inoptional |
| Reserved1 | LPWSTR | inoptional |
| ErrorLogHandle | HLOG* | in |
| Offset | DWORD | in |
| Reserved2 | DWORD* | inoptional |
| Reserved3 | DWORD | in |
| OffsetFlag | DWORD | in |
| BufPtr | BYTE** | out |
| PrefMaxSize | DWORD | in |
| BytesRead | DWORD* | out |
| TotalAvailable | DWORD* | out |
戻り値の型: DWORD
各言語での呼び出し定義
// NETAPI32.dll
#include <windows.h>
DWORD NetErrorLogRead(
LPCWSTR UncServerName, // optional
LPWSTR Reserved1, // optional
HLOG* ErrorLogHandle,
DWORD Offset,
DWORD* Reserved2, // optional
DWORD Reserved3,
DWORD OffsetFlag,
BYTE** BufPtr,
DWORD PrefMaxSize,
DWORD* BytesRead,
DWORD* TotalAvailable
);[DllImport("NETAPI32.dll", ExactSpelling = true)]
static extern uint NetErrorLogRead(
[MarshalAs(UnmanagedType.LPWStr)] string UncServerName, // LPCWSTR optional
[MarshalAs(UnmanagedType.LPWStr)] string Reserved1, // LPWSTR optional
IntPtr ErrorLogHandle, // HLOG*
uint Offset, // DWORD
IntPtr Reserved2, // DWORD* optional
uint Reserved3, // DWORD
uint OffsetFlag, // DWORD
IntPtr BufPtr, // BYTE** out
uint PrefMaxSize, // DWORD
out uint BytesRead, // DWORD* out
out uint TotalAvailable // DWORD* out
);<DllImport("NETAPI32.dll", ExactSpelling:=True)>
Public Shared Function NetErrorLogRead(
<MarshalAs(UnmanagedType.LPWStr)> UncServerName As String, ' LPCWSTR optional
<MarshalAs(UnmanagedType.LPWStr)> Reserved1 As String, ' LPWSTR optional
ErrorLogHandle As IntPtr, ' HLOG*
Offset As UInteger, ' DWORD
Reserved2 As IntPtr, ' DWORD* optional
Reserved3 As UInteger, ' DWORD
OffsetFlag As UInteger, ' DWORD
BufPtr As IntPtr, ' BYTE** out
PrefMaxSize As UInteger, ' DWORD
<Out> ByRef BytesRead As UInteger, ' DWORD* out
<Out> ByRef TotalAvailable As UInteger ' DWORD* out
) As UInteger
End Function' UncServerName : LPCWSTR optional
' Reserved1 : LPWSTR optional
' ErrorLogHandle : HLOG*
' Offset : DWORD
' Reserved2 : DWORD* optional
' Reserved3 : DWORD
' OffsetFlag : DWORD
' BufPtr : BYTE** out
' PrefMaxSize : DWORD
' BytesRead : DWORD* out
' TotalAvailable : DWORD* out
Declare PtrSafe Function NetErrorLogRead Lib "netapi32" ( _
ByVal UncServerName As LongPtr, _
ByVal Reserved1 As LongPtr, _
ByVal ErrorLogHandle As LongPtr, _
ByVal Offset As Long, _
ByVal Reserved2 As LongPtr, _
ByVal Reserved3 As Long, _
ByVal OffsetFlag As Long, _
ByVal BufPtr As LongPtr, _
ByVal PrefMaxSize As Long, _
ByRef BytesRead As Long, _
ByRef TotalAvailable As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
NetErrorLogRead = ctypes.windll.netapi32.NetErrorLogRead
NetErrorLogRead.restype = wintypes.DWORD
NetErrorLogRead.argtypes = [
wintypes.LPCWSTR, # UncServerName : LPCWSTR optional
wintypes.LPCWSTR, # Reserved1 : LPWSTR optional
ctypes.c_void_p, # ErrorLogHandle : HLOG*
wintypes.DWORD, # Offset : DWORD
ctypes.POINTER(wintypes.DWORD), # Reserved2 : DWORD* optional
wintypes.DWORD, # Reserved3 : DWORD
wintypes.DWORD, # OffsetFlag : DWORD
ctypes.c_void_p, # BufPtr : BYTE** out
wintypes.DWORD, # PrefMaxSize : DWORD
ctypes.POINTER(wintypes.DWORD), # BytesRead : DWORD* out
ctypes.POINTER(wintypes.DWORD), # TotalAvailable : DWORD* out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('NETAPI32.dll')
NetErrorLogRead = Fiddle::Function.new(
lib['NetErrorLogRead'],
[
Fiddle::TYPE_VOIDP, # UncServerName : LPCWSTR optional
Fiddle::TYPE_VOIDP, # Reserved1 : LPWSTR optional
Fiddle::TYPE_VOIDP, # ErrorLogHandle : HLOG*
-Fiddle::TYPE_INT, # Offset : DWORD
Fiddle::TYPE_VOIDP, # Reserved2 : DWORD* optional
-Fiddle::TYPE_INT, # Reserved3 : DWORD
-Fiddle::TYPE_INT, # OffsetFlag : DWORD
Fiddle::TYPE_VOIDP, # BufPtr : BYTE** out
-Fiddle::TYPE_INT, # PrefMaxSize : DWORD
Fiddle::TYPE_VOIDP, # BytesRead : DWORD* out
Fiddle::TYPE_VOIDP, # TotalAvailable : DWORD* out
],
-Fiddle::TYPE_INT)#[link(name = "netapi32")]
extern "system" {
fn NetErrorLogRead(
UncServerName: *const u16, // LPCWSTR optional
Reserved1: *mut u16, // LPWSTR optional
ErrorLogHandle: *mut HLOG, // HLOG*
Offset: u32, // DWORD
Reserved2: *mut u32, // DWORD* optional
Reserved3: u32, // DWORD
OffsetFlag: u32, // DWORD
BufPtr: *mut *mut u8, // BYTE** out
PrefMaxSize: u32, // DWORD
BytesRead: *mut u32, // DWORD* out
TotalAvailable: *mut u32 // DWORD* out
) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("NETAPI32.dll")]
public static extern uint NetErrorLogRead([MarshalAs(UnmanagedType.LPWStr)] string UncServerName, [MarshalAs(UnmanagedType.LPWStr)] string Reserved1, IntPtr ErrorLogHandle, uint Offset, IntPtr Reserved2, uint Reserved3, uint OffsetFlag, IntPtr BufPtr, uint PrefMaxSize, out uint BytesRead, out uint TotalAvailable);
"@
$api = Add-Type -MemberDefinition $sig -Name 'NETAPI32_NetErrorLogRead' -Namespace Win32 -PassThru
# $api::NetErrorLogRead(UncServerName, Reserved1, ErrorLogHandle, Offset, Reserved2, Reserved3, OffsetFlag, BufPtr, PrefMaxSize, BytesRead, TotalAvailable)#uselib "NETAPI32.dll"
#func global NetErrorLogRead "NetErrorLogRead" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; NetErrorLogRead UncServerName, Reserved1, varptr(ErrorLogHandle), Offset, varptr(Reserved2), Reserved3, OffsetFlag, varptr(BufPtr), PrefMaxSize, varptr(BytesRead), varptr(TotalAvailable) ; 戻り値は stat
; UncServerName : LPCWSTR optional -> "sptr"
; Reserved1 : LPWSTR optional -> "sptr"
; ErrorLogHandle : HLOG* -> "sptr"
; Offset : DWORD -> "sptr"
; Reserved2 : DWORD* optional -> "sptr"
; Reserved3 : DWORD -> "sptr"
; OffsetFlag : DWORD -> "sptr"
; BufPtr : BYTE** out -> "sptr"
; PrefMaxSize : DWORD -> "sptr"
; BytesRead : DWORD* out -> "sptr"
; TotalAvailable : DWORD* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "NETAPI32.dll" #cfunc global NetErrorLogRead "NetErrorLogRead" wstr, wstr, var, int, var, int, int, var, int, var, var ; res = NetErrorLogRead(UncServerName, Reserved1, ErrorLogHandle, Offset, Reserved2, Reserved3, OffsetFlag, BufPtr, PrefMaxSize, BytesRead, TotalAvailable) ; UncServerName : LPCWSTR optional -> "wstr" ; Reserved1 : LPWSTR optional -> "wstr" ; ErrorLogHandle : HLOG* -> "var" ; Offset : DWORD -> "int" ; Reserved2 : DWORD* optional -> "var" ; Reserved3 : DWORD -> "int" ; OffsetFlag : DWORD -> "int" ; BufPtr : BYTE** out -> "var" ; PrefMaxSize : DWORD -> "int" ; BytesRead : DWORD* out -> "var" ; TotalAvailable : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "NETAPI32.dll" #cfunc global NetErrorLogRead "NetErrorLogRead" wstr, wstr, sptr, int, sptr, int, int, sptr, int, sptr, sptr ; res = NetErrorLogRead(UncServerName, Reserved1, varptr(ErrorLogHandle), Offset, varptr(Reserved2), Reserved3, OffsetFlag, varptr(BufPtr), PrefMaxSize, varptr(BytesRead), varptr(TotalAvailable)) ; UncServerName : LPCWSTR optional -> "wstr" ; Reserved1 : LPWSTR optional -> "wstr" ; ErrorLogHandle : HLOG* -> "sptr" ; Offset : DWORD -> "int" ; Reserved2 : DWORD* optional -> "sptr" ; Reserved3 : DWORD -> "int" ; OffsetFlag : DWORD -> "int" ; BufPtr : BYTE** out -> "sptr" ; PrefMaxSize : DWORD -> "int" ; BytesRead : DWORD* out -> "sptr" ; TotalAvailable : DWORD* out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; DWORD NetErrorLogRead(LPCWSTR UncServerName, LPWSTR Reserved1, HLOG* ErrorLogHandle, DWORD Offset, DWORD* Reserved2, DWORD Reserved3, DWORD OffsetFlag, BYTE** BufPtr, DWORD PrefMaxSize, DWORD* BytesRead, DWORD* TotalAvailable) #uselib "NETAPI32.dll" #cfunc global NetErrorLogRead "NetErrorLogRead" wstr, wstr, var, int, var, int, int, var, int, var, var ; res = NetErrorLogRead(UncServerName, Reserved1, ErrorLogHandle, Offset, Reserved2, Reserved3, OffsetFlag, BufPtr, PrefMaxSize, BytesRead, TotalAvailable) ; UncServerName : LPCWSTR optional -> "wstr" ; Reserved1 : LPWSTR optional -> "wstr" ; ErrorLogHandle : HLOG* -> "var" ; Offset : DWORD -> "int" ; Reserved2 : DWORD* optional -> "var" ; Reserved3 : DWORD -> "int" ; OffsetFlag : DWORD -> "int" ; BufPtr : BYTE** out -> "var" ; PrefMaxSize : DWORD -> "int" ; BytesRead : DWORD* out -> "var" ; TotalAvailable : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; DWORD NetErrorLogRead(LPCWSTR UncServerName, LPWSTR Reserved1, HLOG* ErrorLogHandle, DWORD Offset, DWORD* Reserved2, DWORD Reserved3, DWORD OffsetFlag, BYTE** BufPtr, DWORD PrefMaxSize, DWORD* BytesRead, DWORD* TotalAvailable) #uselib "NETAPI32.dll" #cfunc global NetErrorLogRead "NetErrorLogRead" wstr, wstr, intptr, int, intptr, int, int, intptr, int, intptr, intptr ; res = NetErrorLogRead(UncServerName, Reserved1, varptr(ErrorLogHandle), Offset, varptr(Reserved2), Reserved3, OffsetFlag, varptr(BufPtr), PrefMaxSize, varptr(BytesRead), varptr(TotalAvailable)) ; UncServerName : LPCWSTR optional -> "wstr" ; Reserved1 : LPWSTR optional -> "wstr" ; ErrorLogHandle : HLOG* -> "intptr" ; Offset : DWORD -> "int" ; Reserved2 : DWORD* optional -> "intptr" ; Reserved3 : DWORD -> "int" ; OffsetFlag : DWORD -> "int" ; BufPtr : BYTE** out -> "intptr" ; PrefMaxSize : DWORD -> "int" ; BytesRead : DWORD* out -> "intptr" ; TotalAvailable : DWORD* out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
netapi32 = windows.NewLazySystemDLL("NETAPI32.dll")
procNetErrorLogRead = netapi32.NewProc("NetErrorLogRead")
)
// UncServerName (LPCWSTR optional), Reserved1 (LPWSTR optional), ErrorLogHandle (HLOG*), Offset (DWORD), Reserved2 (DWORD* optional), Reserved3 (DWORD), OffsetFlag (DWORD), BufPtr (BYTE** out), PrefMaxSize (DWORD), BytesRead (DWORD* out), TotalAvailable (DWORD* out)
r1, _, err := procNetErrorLogRead.Call(
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(UncServerName))),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(Reserved1))),
uintptr(ErrorLogHandle),
uintptr(Offset),
uintptr(Reserved2),
uintptr(Reserved3),
uintptr(OffsetFlag),
uintptr(BufPtr),
uintptr(PrefMaxSize),
uintptr(BytesRead),
uintptr(TotalAvailable),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // DWORDfunction NetErrorLogRead(
UncServerName: PWideChar; // LPCWSTR optional
Reserved1: PWideChar; // LPWSTR optional
ErrorLogHandle: Pointer; // HLOG*
Offset: DWORD; // DWORD
Reserved2: Pointer; // DWORD* optional
Reserved3: DWORD; // DWORD
OffsetFlag: DWORD; // DWORD
BufPtr: Pointer; // BYTE** out
PrefMaxSize: DWORD; // DWORD
BytesRead: Pointer; // DWORD* out
TotalAvailable: Pointer // DWORD* out
): DWORD; stdcall;
external 'NETAPI32.dll' name 'NetErrorLogRead';result := DllCall("NETAPI32\NetErrorLogRead"
, "WStr", UncServerName ; LPCWSTR optional
, "WStr", Reserved1 ; LPWSTR optional
, "Ptr", ErrorLogHandle ; HLOG*
, "UInt", Offset ; DWORD
, "Ptr", Reserved2 ; DWORD* optional
, "UInt", Reserved3 ; DWORD
, "UInt", OffsetFlag ; DWORD
, "Ptr", BufPtr ; BYTE** out
, "UInt", PrefMaxSize ; DWORD
, "Ptr", BytesRead ; DWORD* out
, "Ptr", TotalAvailable ; DWORD* out
, "UInt") ; return: DWORD●NetErrorLogRead(UncServerName, Reserved1, ErrorLogHandle, Offset, Reserved2, Reserved3, OffsetFlag, BufPtr, PrefMaxSize, BytesRead, TotalAvailable) = DLL("NETAPI32.dll", "dword NetErrorLogRead(char*, char*, void*, dword, void*, dword, dword, void*, dword, void*, void*)")
# 呼び出し: NetErrorLogRead(UncServerName, Reserved1, ErrorLogHandle, Offset, Reserved2, Reserved3, OffsetFlag, BufPtr, PrefMaxSize, BytesRead, TotalAvailable)
# UncServerName : LPCWSTR optional -> "char*"
# Reserved1 : LPWSTR optional -> "char*"
# ErrorLogHandle : HLOG* -> "void*"
# Offset : DWORD -> "dword"
# Reserved2 : DWORD* optional -> "void*"
# Reserved3 : DWORD -> "dword"
# OffsetFlag : DWORD -> "dword"
# BufPtr : BYTE** out -> "void*"
# PrefMaxSize : DWORD -> "dword"
# BytesRead : DWORD* out -> "void*"
# TotalAvailable : DWORD* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。