ホーム › NetworkManagement.WindowsConnectionManager › WCM_BILLING_CYCLE_INFO
WCM_BILLING_CYCLE_INFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| StartDate | FILETIME | 8 | +0 | +0 | 課金サイクルの開始日時。FILETIME形式。 |
| Duration | WCM_TIME_INTERVAL | 14 | +8 | +8 | 課金サイクルの期間を表す時間間隔。 |
| Reset | BOOL | 4 | +24 | +24 | サイクル終了時に使用量をリセットするかを示すBOOL。 |
各言語での定義
#include <windows.h>
// FILETIME (x64 8 / x86 8 バイト)
typedef struct FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// WCM_TIME_INTERVAL (x64 14 / x86 14 バイト)
typedef struct WCM_TIME_INTERVAL {
WORD wYear;
WORD wMonth;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} WCM_TIME_INTERVAL;
// WCM_BILLING_CYCLE_INFO (x64 28 / x86 28 バイト)
typedef struct WCM_BILLING_CYCLE_INFO {
FILETIME StartDate;
WCM_TIME_INTERVAL Duration;
BOOL Reset;
} WCM_BILLING_CYCLE_INFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public uint dwLowDateTime;
public uint dwHighDateTime;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WCM_TIME_INTERVAL
{
public ushort wYear;
public ushort wMonth;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WCM_BILLING_CYCLE_INFO
{
public FILETIME StartDate;
public WCM_TIME_INTERVAL Duration;
[MarshalAs(UnmanagedType.Bool)] public bool Reset;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WCM_TIME_INTERVAL
Public wYear As UShort
Public wMonth As UShort
Public wDay As UShort
Public wHour As UShort
Public wMinute As UShort
Public wSecond As UShort
Public wMilliseconds As UShort
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WCM_BILLING_CYCLE_INFO
Public StartDate As FILETIME
Public Duration As WCM_TIME_INTERVAL
<MarshalAs(UnmanagedType.Bool)> Public Reset As Boolean
End Structureimport ctypes
from ctypes import wintypes
class FILETIME(ctypes.Structure):
_fields_ = [
("dwLowDateTime", wintypes.DWORD),
("dwHighDateTime", wintypes.DWORD),
]
class WCM_TIME_INTERVAL(ctypes.Structure):
_fields_ = [
("wYear", ctypes.c_ushort),
("wMonth", ctypes.c_ushort),
("wDay", ctypes.c_ushort),
("wHour", ctypes.c_ushort),
("wMinute", ctypes.c_ushort),
("wSecond", ctypes.c_ushort),
("wMilliseconds", ctypes.c_ushort),
]
class WCM_BILLING_CYCLE_INFO(ctypes.Structure):
_fields_ = [
("StartDate", FILETIME),
("Duration", WCM_TIME_INTERVAL),
("Reset", wintypes.BOOL),
]#[repr(C)]
pub struct FILETIME {
pub dwLowDateTime: u32,
pub dwHighDateTime: u32,
}
#[repr(C)]
pub struct WCM_TIME_INTERVAL {
pub wYear: u16,
pub wMonth: u16,
pub wDay: u16,
pub wHour: u16,
pub wMinute: u16,
pub wSecond: u16,
pub wMilliseconds: u16,
}
#[repr(C)]
pub struct WCM_BILLING_CYCLE_INFO {
pub StartDate: FILETIME,
pub Duration: WCM_TIME_INTERVAL,
pub Reset: i32,
}import "golang.org/x/sys/windows"
type FILETIME struct {
dwLowDateTime uint32
dwHighDateTime uint32
}
type WCM_TIME_INTERVAL struct {
wYear uint16
wMonth uint16
wDay uint16
wHour uint16
wMinute uint16
wSecond uint16
wMilliseconds uint16
}
type WCM_BILLING_CYCLE_INFO struct {
StartDate FILETIME
Duration WCM_TIME_INTERVAL
Reset int32
}type
FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
WCM_TIME_INTERVAL = record
wYear: Word;
wMonth: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
WCM_BILLING_CYCLE_INFO = record
StartDate: FILETIME;
Duration: WCM_TIME_INTERVAL;
Reset: BOOL;
end;const FILETIME = extern struct {
dwLowDateTime: u32,
dwHighDateTime: u32,
};
const WCM_TIME_INTERVAL = extern struct {
wYear: u16,
wMonth: u16,
wDay: u16,
wHour: u16,
wMinute: u16,
wSecond: u16,
wMilliseconds: u16,
};
const WCM_BILLING_CYCLE_INFO = extern struct {
StartDate: FILETIME,
Duration: WCM_TIME_INTERVAL,
Reset: i32,
};type
FILETIME {.bycopy.} = object
dwLowDateTime: uint32
dwHighDateTime: uint32
WCM_TIME_INTERVAL {.bycopy.} = object
wYear: uint16
wMonth: uint16
wDay: uint16
wHour: uint16
wMinute: uint16
wSecond: uint16
wMilliseconds: uint16
WCM_BILLING_CYCLE_INFO {.bycopy.} = object
StartDate: FILETIME
Duration: WCM_TIME_INTERVAL
Reset: int32struct FILETIME
{
uint dwLowDateTime;
uint dwHighDateTime;
}
struct WCM_TIME_INTERVAL
{
ushort wYear;
ushort wMonth;
ushort wDay;
ushort wHour;
ushort wMinute;
ushort wSecond;
ushort wMilliseconds;
}
struct WCM_BILLING_CYCLE_INFO
{
FILETIME StartDate;
WCM_TIME_INTERVAL Duration;
int Reset;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WCM_BILLING_CYCLE_INFO サイズ: 28 バイト(x64)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; StartDate : FILETIME (+0, 8byte) varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; Duration : WCM_TIME_INTERVAL (+8, 14byte) varptr(st)+8 を基点に操作(14byte:入れ子/配列)
; Reset : BOOL (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
#field int dwLowDateTime
#field int dwHighDateTime
#endstruct
#defstruct global WCM_TIME_INTERVAL
#field short wYear
#field short wMonth
#field short wDay
#field short wHour
#field short wMinute
#field short wSecond
#field short wMilliseconds
#endstruct
#defstruct global WCM_BILLING_CYCLE_INFO
#field FILETIME StartDate
#field WCM_TIME_INTERVAL Duration
#field bool Reset
#endstruct
stdim st, WCM_BILLING_CYCLE_INFO ; NSTRUCT 変数を確保
st->Reset = 100
mes "Reset=" + st->Reset