ホーム › Networking.HttpServer › HTTP_LOG_FIELDS_DATA
HTTP_LOG_FIELDS_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Base | HTTP_LOG_DATA | 4 | +0 | +0 | ログデータ種別を示す基底のHTTP_LOG_DATAである。 |
| UserNameLength | WORD | 2 | +4 | +4 | UserNameのバイト長(WORD)である。 |
| UriStemLength | WORD | 2 | +6 | +6 | UriStemのバイト長(WORD)である。 |
| ClientIpLength | WORD | 2 | +8 | +8 | ClientIpのバイト長(WORD)である。 |
| ServerNameLength | WORD | 2 | +10 | +10 | ServerNameのバイト長(WORD)である。 |
| ServiceNameLength | WORD | 2 | +12 | +12 | ServiceNameのバイト長(WORD)である。 |
| ServerIpLength | WORD | 2 | +14 | +14 | ServerIpのバイト長(WORD)である。 |
| MethodLength | WORD | 2 | +16 | +16 | Methodのバイト長(WORD)である。 |
| UriQueryLength | WORD | 2 | +18 | +18 | UriQueryのバイト長(WORD)である。 |
| HostLength | WORD | 2 | +20 | +20 | Hostのバイト長(WORD)である。 |
| UserAgentLength | WORD | 2 | +22 | +22 | UserAgentのバイト長(WORD)である。 |
| CookieLength | WORD | 2 | +24 | +24 | Cookieのバイト長(WORD)である。 |
| ReferrerLength | WORD | 2 | +26 | +26 | Referrerのバイト長(WORD)である。 |
| UserName | LPWSTR | 8/4 | +32 | +28 | 認証済みユーザー名を示すワイド文字列ポインターである。 |
| UriStem | LPWSTR | 8/4 | +40 | +32 | 要求URIのパス部分を示すワイド文字列ポインターである。 |
| ClientIp | LPSTR | 8/4 | +48 | +36 | クライアントのIPアドレスを示すANSI文字列ポインターである。 |
| ServerName | LPSTR | 8/4 | +56 | +40 | サーバー名(コンピューター名)を示すANSI文字列ポインターである。 |
| ServiceName | LPSTR | 8/4 | +64 | +44 | サービス名を示すANSI文字列ポインターである。 |
| ServerIp | LPSTR | 8/4 | +72 | +48 | サーバーのIPアドレスを示すANSI文字列ポインターである。 |
| Method | LPSTR | 8/4 | +80 | +52 | HTTPメソッド名を示すANSI文字列ポインターである。 |
| UriQuery | LPSTR | 8/4 | +88 | +56 | 要求URIのクエリ文字列を示すANSI文字列ポインターである。 |
| Host | LPSTR | 8/4 | +96 | +60 | Hostヘッダーの値を示すANSI文字列ポインターである。 |
| UserAgent | LPSTR | 8/4 | +104 | +64 | User-Agentヘッダーの値を示すANSI文字列ポインターである。 |
| Cookie | LPSTR | 8/4 | +112 | +68 | Cookieヘッダーの値を示すANSI文字列ポインターである。 |
| Referrer | LPSTR | 8/4 | +120 | +72 | Refererヘッダーの値を示すANSI文字列ポインターである。 |
| ServerPort | WORD | 2 | +128 | +76 | 応答したサーバーのポート番号(WORD)である。 |
| ProtocolStatus | WORD | 2 | +130 | +78 | HTTP応答ステータスコード(WORD)である。 |
| Win32Status | DWORD | 4 | +132 | +80 | 処理結果のWin32ステータスコードである。0で成功。 |
| MethodNum | HTTP_VERB | 4 | +136 | +84 | HTTPメソッドを示すHTTP_VERB列挙値である。 |
| SubStatus | WORD | 2 | +140 | +88 | 詳細なサブステータスコード(WORD)である。 |
各言語での定義
#include <windows.h>
// HTTP_LOG_DATA (x64 4 / x86 4 バイト)
typedef struct HTTP_LOG_DATA {
HTTP_LOG_DATA_TYPE Type;
} HTTP_LOG_DATA;
// HTTP_LOG_FIELDS_DATA (x64 144 / x86 92 バイト)
typedef struct HTTP_LOG_FIELDS_DATA {
HTTP_LOG_DATA Base;
WORD UserNameLength;
WORD UriStemLength;
WORD ClientIpLength;
WORD ServerNameLength;
WORD ServiceNameLength;
WORD ServerIpLength;
WORD MethodLength;
WORD UriQueryLength;
WORD HostLength;
WORD UserAgentLength;
WORD CookieLength;
WORD ReferrerLength;
LPWSTR UserName;
LPWSTR UriStem;
LPSTR ClientIp;
LPSTR ServerName;
LPSTR ServiceName;
LPSTR ServerIp;
LPSTR Method;
LPSTR UriQuery;
LPSTR Host;
LPSTR UserAgent;
LPSTR Cookie;
LPSTR Referrer;
WORD ServerPort;
WORD ProtocolStatus;
DWORD Win32Status;
HTTP_VERB MethodNum;
WORD SubStatus;
} HTTP_LOG_FIELDS_DATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_LOG_DATA
{
public int Type;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_LOG_FIELDS_DATA
{
public HTTP_LOG_DATA Base;
public ushort UserNameLength;
public ushort UriStemLength;
public ushort ClientIpLength;
public ushort ServerNameLength;
public ushort ServiceNameLength;
public ushort ServerIpLength;
public ushort MethodLength;
public ushort UriQueryLength;
public ushort HostLength;
public ushort UserAgentLength;
public ushort CookieLength;
public ushort ReferrerLength;
public IntPtr UserName;
public IntPtr UriStem;
public IntPtr ClientIp;
public IntPtr ServerName;
public IntPtr ServiceName;
public IntPtr ServerIp;
public IntPtr Method;
public IntPtr UriQuery;
public IntPtr Host;
public IntPtr UserAgent;
public IntPtr Cookie;
public IntPtr Referrer;
public ushort ServerPort;
public ushort ProtocolStatus;
public uint Win32Status;
public int MethodNum;
public ushort SubStatus;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_LOG_DATA
Public Type As Integer
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_LOG_FIELDS_DATA
Public Base As HTTP_LOG_DATA
Public UserNameLength As UShort
Public UriStemLength As UShort
Public ClientIpLength As UShort
Public ServerNameLength As UShort
Public ServiceNameLength As UShort
Public ServerIpLength As UShort
Public MethodLength As UShort
Public UriQueryLength As UShort
Public HostLength As UShort
Public UserAgentLength As UShort
Public CookieLength As UShort
Public ReferrerLength As UShort
Public UserName As IntPtr
Public UriStem As IntPtr
Public ClientIp As IntPtr
Public ServerName As IntPtr
Public ServiceName As IntPtr
Public ServerIp As IntPtr
Public Method As IntPtr
Public UriQuery As IntPtr
Public Host As IntPtr
Public UserAgent As IntPtr
Public Cookie As IntPtr
Public Referrer As IntPtr
Public ServerPort As UShort
Public ProtocolStatus As UShort
Public Win32Status As UInteger
Public MethodNum As Integer
Public SubStatus As UShort
End Structureimport ctypes
from ctypes import wintypes
class HTTP_LOG_DATA(ctypes.Structure):
_fields_ = [
("Type", ctypes.c_int),
]
class HTTP_LOG_FIELDS_DATA(ctypes.Structure):
_fields_ = [
("Base", HTTP_LOG_DATA),
("UserNameLength", ctypes.c_ushort),
("UriStemLength", ctypes.c_ushort),
("ClientIpLength", ctypes.c_ushort),
("ServerNameLength", ctypes.c_ushort),
("ServiceNameLength", ctypes.c_ushort),
("ServerIpLength", ctypes.c_ushort),
("MethodLength", ctypes.c_ushort),
("UriQueryLength", ctypes.c_ushort),
("HostLength", ctypes.c_ushort),
("UserAgentLength", ctypes.c_ushort),
("CookieLength", ctypes.c_ushort),
("ReferrerLength", ctypes.c_ushort),
("UserName", ctypes.c_void_p),
("UriStem", ctypes.c_void_p),
("ClientIp", ctypes.c_void_p),
("ServerName", ctypes.c_void_p),
("ServiceName", ctypes.c_void_p),
("ServerIp", ctypes.c_void_p),
("Method", ctypes.c_void_p),
("UriQuery", ctypes.c_void_p),
("Host", ctypes.c_void_p),
("UserAgent", ctypes.c_void_p),
("Cookie", ctypes.c_void_p),
("Referrer", ctypes.c_void_p),
("ServerPort", ctypes.c_ushort),
("ProtocolStatus", ctypes.c_ushort),
("Win32Status", wintypes.DWORD),
("MethodNum", ctypes.c_int),
("SubStatus", ctypes.c_ushort),
]#[repr(C)]
pub struct HTTP_LOG_DATA {
pub Type: i32,
}
#[repr(C)]
pub struct HTTP_LOG_FIELDS_DATA {
pub Base: HTTP_LOG_DATA,
pub UserNameLength: u16,
pub UriStemLength: u16,
pub ClientIpLength: u16,
pub ServerNameLength: u16,
pub ServiceNameLength: u16,
pub ServerIpLength: u16,
pub MethodLength: u16,
pub UriQueryLength: u16,
pub HostLength: u16,
pub UserAgentLength: u16,
pub CookieLength: u16,
pub ReferrerLength: u16,
pub UserName: *mut core::ffi::c_void,
pub UriStem: *mut core::ffi::c_void,
pub ClientIp: *mut core::ffi::c_void,
pub ServerName: *mut core::ffi::c_void,
pub ServiceName: *mut core::ffi::c_void,
pub ServerIp: *mut core::ffi::c_void,
pub Method: *mut core::ffi::c_void,
pub UriQuery: *mut core::ffi::c_void,
pub Host: *mut core::ffi::c_void,
pub UserAgent: *mut core::ffi::c_void,
pub Cookie: *mut core::ffi::c_void,
pub Referrer: *mut core::ffi::c_void,
pub ServerPort: u16,
pub ProtocolStatus: u16,
pub Win32Status: u32,
pub MethodNum: i32,
pub SubStatus: u16,
}import "golang.org/x/sys/windows"
type HTTP_LOG_DATA struct {
Type int32
}
type HTTP_LOG_FIELDS_DATA struct {
Base HTTP_LOG_DATA
UserNameLength uint16
UriStemLength uint16
ClientIpLength uint16
ServerNameLength uint16
ServiceNameLength uint16
ServerIpLength uint16
MethodLength uint16
UriQueryLength uint16
HostLength uint16
UserAgentLength uint16
CookieLength uint16
ReferrerLength uint16
UserName uintptr
UriStem uintptr
ClientIp uintptr
ServerName uintptr
ServiceName uintptr
ServerIp uintptr
Method uintptr
UriQuery uintptr
Host uintptr
UserAgent uintptr
Cookie uintptr
Referrer uintptr
ServerPort uint16
ProtocolStatus uint16
Win32Status uint32
MethodNum int32
SubStatus uint16
}type
HTTP_LOG_DATA = record
Type: Integer;
end;
HTTP_LOG_FIELDS_DATA = record
Base: HTTP_LOG_DATA;
UserNameLength: Word;
UriStemLength: Word;
ClientIpLength: Word;
ServerNameLength: Word;
ServiceNameLength: Word;
ServerIpLength: Word;
MethodLength: Word;
UriQueryLength: Word;
HostLength: Word;
UserAgentLength: Word;
CookieLength: Word;
ReferrerLength: Word;
UserName: Pointer;
UriStem: Pointer;
ClientIp: Pointer;
ServerName: Pointer;
ServiceName: Pointer;
ServerIp: Pointer;
Method: Pointer;
UriQuery: Pointer;
Host: Pointer;
UserAgent: Pointer;
Cookie: Pointer;
Referrer: Pointer;
ServerPort: Word;
ProtocolStatus: Word;
Win32Status: DWORD;
MethodNum: Integer;
SubStatus: Word;
end;const HTTP_LOG_DATA = extern struct {
Type: i32,
};
const HTTP_LOG_FIELDS_DATA = extern struct {
Base: HTTP_LOG_DATA,
UserNameLength: u16,
UriStemLength: u16,
ClientIpLength: u16,
ServerNameLength: u16,
ServiceNameLength: u16,
ServerIpLength: u16,
MethodLength: u16,
UriQueryLength: u16,
HostLength: u16,
UserAgentLength: u16,
CookieLength: u16,
ReferrerLength: u16,
UserName: ?*anyopaque,
UriStem: ?*anyopaque,
ClientIp: ?*anyopaque,
ServerName: ?*anyopaque,
ServiceName: ?*anyopaque,
ServerIp: ?*anyopaque,
Method: ?*anyopaque,
UriQuery: ?*anyopaque,
Host: ?*anyopaque,
UserAgent: ?*anyopaque,
Cookie: ?*anyopaque,
Referrer: ?*anyopaque,
ServerPort: u16,
ProtocolStatus: u16,
Win32Status: u32,
MethodNum: i32,
SubStatus: u16,
};type
HTTP_LOG_DATA {.bycopy.} = object
Type: int32
HTTP_LOG_FIELDS_DATA {.bycopy.} = object
Base: HTTP_LOG_DATA
UserNameLength: uint16
UriStemLength: uint16
ClientIpLength: uint16
ServerNameLength: uint16
ServiceNameLength: uint16
ServerIpLength: uint16
MethodLength: uint16
UriQueryLength: uint16
HostLength: uint16
UserAgentLength: uint16
CookieLength: uint16
ReferrerLength: uint16
UserName: pointer
UriStem: pointer
ClientIp: pointer
ServerName: pointer
ServiceName: pointer
ServerIp: pointer
Method: pointer
UriQuery: pointer
Host: pointer
UserAgent: pointer
Cookie: pointer
Referrer: pointer
ServerPort: uint16
ProtocolStatus: uint16
Win32Status: uint32
MethodNum: int32
SubStatus: uint16struct HTTP_LOG_DATA
{
int Type;
}
struct HTTP_LOG_FIELDS_DATA
{
HTTP_LOG_DATA Base;
ushort UserNameLength;
ushort UriStemLength;
ushort ClientIpLength;
ushort ServerNameLength;
ushort ServiceNameLength;
ushort ServerIpLength;
ushort MethodLength;
ushort UriQueryLength;
ushort HostLength;
ushort UserAgentLength;
ushort CookieLength;
ushort ReferrerLength;
void* UserName;
void* UriStem;
void* ClientIp;
void* ServerName;
void* ServiceName;
void* ServerIp;
void* Method;
void* UriQuery;
void* Host;
void* UserAgent;
void* Cookie;
void* Referrer;
ushort ServerPort;
ushort ProtocolStatus;
uint Win32Status;
int MethodNum;
ushort SubStatus;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; HTTP_LOG_FIELDS_DATA サイズ: 92 バイト(x86)
dim st, 23 ; 4byte整数×23(構造体サイズ 92 / 4 切り上げ)
; Base : HTTP_LOG_DATA (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; UserNameLength : WORD (+4, 2byte) wpoke st,4,値 / 値 = wpeek(st,4)
; UriStemLength : WORD (+6, 2byte) wpoke st,6,値 / 値 = wpeek(st,6)
; ClientIpLength : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; ServerNameLength : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; ServiceNameLength : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; ServerIpLength : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; MethodLength : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; UriQueryLength : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; HostLength : WORD (+20, 2byte) wpoke st,20,値 / 値 = wpeek(st,20)
; UserAgentLength : WORD (+22, 2byte) wpoke st,22,値 / 値 = wpeek(st,22)
; CookieLength : WORD (+24, 2byte) wpoke st,24,値 / 値 = wpeek(st,24)
; ReferrerLength : WORD (+26, 2byte) wpoke st,26,値 / 値 = wpeek(st,26)
; UserName : LPWSTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; UriStem : LPWSTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ClientIp : LPSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ServerName : LPSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ServiceName : LPSTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ServerIp : LPSTR (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; Method : LPSTR (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; UriQuery : LPSTR (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; Host : LPSTR (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; UserAgent : LPSTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; Cookie : LPSTR (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; Referrer : LPSTR (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ServerPort : WORD (+76, 2byte) wpoke st,76,値 / 値 = wpeek(st,76)
; ProtocolStatus : WORD (+78, 2byte) wpoke st,78,値 / 値 = wpeek(st,78)
; Win32Status : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; MethodNum : HTTP_VERB (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; SubStatus : WORD (+88, 2byte) wpoke st,88,値 / 値 = wpeek(st,88)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; HTTP_LOG_FIELDS_DATA サイズ: 144 バイト(x64)
dim st, 36 ; 4byte整数×36(構造体サイズ 144 / 4 切り上げ)
; Base : HTTP_LOG_DATA (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; UserNameLength : WORD (+4, 2byte) wpoke st,4,値 / 値 = wpeek(st,4)
; UriStemLength : WORD (+6, 2byte) wpoke st,6,値 / 値 = wpeek(st,6)
; ClientIpLength : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; ServerNameLength : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; ServiceNameLength : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; ServerIpLength : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; MethodLength : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; UriQueryLength : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; HostLength : WORD (+20, 2byte) wpoke st,20,値 / 値 = wpeek(st,20)
; UserAgentLength : WORD (+22, 2byte) wpoke st,22,値 / 値 = wpeek(st,22)
; CookieLength : WORD (+24, 2byte) wpoke st,24,値 / 値 = wpeek(st,24)
; ReferrerLength : WORD (+26, 2byte) wpoke st,26,値 / 値 = wpeek(st,26)
; UserName : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; UriStem : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ClientIp : LPSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ServerName : LPSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ServiceName : LPSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; ServerIp : LPSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; Method : LPSTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; UriQuery : LPSTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; Host : LPSTR (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; UserAgent : LPSTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; Cookie : LPSTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; Referrer : LPSTR (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; ServerPort : WORD (+128, 2byte) wpoke st,128,値 / 値 = wpeek(st,128)
; ProtocolStatus : WORD (+130, 2byte) wpoke st,130,値 / 値 = wpeek(st,130)
; Win32Status : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; MethodNum : HTTP_VERB (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; SubStatus : WORD (+140, 2byte) wpoke st,140,値 / 値 = wpeek(st,140)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global HTTP_LOG_DATA
#field int Type
#endstruct
#defstruct global HTTP_LOG_FIELDS_DATA
#field HTTP_LOG_DATA Base
#field short UserNameLength
#field short UriStemLength
#field short ClientIpLength
#field short ServerNameLength
#field short ServiceNameLength
#field short ServerIpLength
#field short MethodLength
#field short UriQueryLength
#field short HostLength
#field short UserAgentLength
#field short CookieLength
#field short ReferrerLength
#field intptr UserName
#field intptr UriStem
#field intptr ClientIp
#field intptr ServerName
#field intptr ServiceName
#field intptr ServerIp
#field intptr Method
#field intptr UriQuery
#field intptr Host
#field intptr UserAgent
#field intptr Cookie
#field intptr Referrer
#field short ServerPort
#field short ProtocolStatus
#field int Win32Status
#field int MethodNum
#field short SubStatus
#endstruct
stdim st, HTTP_LOG_FIELDS_DATA ; NSTRUCT 変数を確保
st->UserNameLength = 100
mes "UserNameLength=" + st->UserNameLength