Win32 API 日本語リファレンス
ホームNetworkManagement.NetManagement › NetErrorLogRead

NetErrorLogRead

関数
サーバーのエラーログから記録されたエントリを読み取る。
DLLNETAPI32.dll呼出規約winapi

シグネチャ

// 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
);

パラメーター

名前方向
UncServerNameLPCWSTRinoptional
Reserved1LPWSTRinoptional
ErrorLogHandleHLOG*in
OffsetDWORDin
Reserved2DWORD*inoptional
Reserved3DWORDin
OffsetFlagDWORDin
BufPtrBYTE**out
PrefMaxSizeDWORDin
BytesReadDWORD*out
TotalAvailableDWORD*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 方式にも切替可。
出力引数:
; 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 方式にも切替可。
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   // DWORD
function 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)。