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

AT_ENUM

構造体
サイズx64: 32 バイト / x86: 20 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
JobIdDWORD4+0+0列挙されたジョブに割り当てられた一意のジョブIDを示す。
JobTimeUINT_PTR8/4+8+4ジョブを実行する時刻を午前0時からのミリ秒で示す(ポインタサイズ整数)。
DaysOfMonthDWORD4+16+8ジョブを実行する月内の日をビットマスクで示す。各ビットが1日に対応する。
DaysOfWeekBYTE1+20+12ジョブを実行する曜日をビットマスクで示す。ビット0が月曜に対応する。
FlagsBYTE1+21+13ジョブの動作を制御するフラグ。JOB_RUN_PERIODICALLY等のビットを組み合わせる。
CommandLPWSTR8/4+24+16実行するコマンドラインを表す文字列へのポインタ。

各言語での定義

#include <windows.h>

// AT_ENUM  (x64 32 / x86 20 バイト)
typedef struct AT_ENUM {
    DWORD JobId;
    UINT_PTR JobTime;
    DWORD DaysOfMonth;
    BYTE DaysOfWeek;
    BYTE Flags;
    LPWSTR Command;
} AT_ENUM;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AT_ENUM
{
    public uint JobId;
    public UIntPtr JobTime;
    public uint DaysOfMonth;
    public byte DaysOfWeek;
    public byte Flags;
    public IntPtr Command;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AT_ENUM
    Public JobId As UInteger
    Public JobTime As UIntPtr
    Public DaysOfMonth As UInteger
    Public DaysOfWeek As Byte
    Public Flags As Byte
    Public Command As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class AT_ENUM(ctypes.Structure):
    _fields_ = [
        ("JobId", wintypes.DWORD),
        ("JobTime", ctypes.c_size_t),
        ("DaysOfMonth", wintypes.DWORD),
        ("DaysOfWeek", ctypes.c_ubyte),
        ("Flags", ctypes.c_ubyte),
        ("Command", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct AT_ENUM {
    pub JobId: u32,
    pub JobTime: usize,
    pub DaysOfMonth: u32,
    pub DaysOfWeek: u8,
    pub Flags: u8,
    pub Command: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type AT_ENUM struct {
	JobId uint32
	JobTime uintptr
	DaysOfMonth uint32
	DaysOfWeek byte
	Flags byte
	Command uintptr
}
type
  AT_ENUM = record
    JobId: DWORD;
    JobTime: NativeUInt;
    DaysOfMonth: DWORD;
    DaysOfWeek: Byte;
    Flags: Byte;
    Command: Pointer;
  end;
const AT_ENUM = extern struct {
    JobId: u32,
    JobTime: usize,
    DaysOfMonth: u32,
    DaysOfWeek: u8,
    Flags: u8,
    Command: ?*anyopaque,
};
type
  AT_ENUM {.bycopy.} = object
    JobId: uint32
    JobTime: uint
    DaysOfMonth: uint32
    DaysOfWeek: uint8
    Flags: uint8
    Command: pointer
struct AT_ENUM
{
    uint JobId;
    size_t JobTime;
    uint DaysOfMonth;
    ubyte DaysOfWeek;
    ubyte Flags;
    void* Command;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; AT_ENUM サイズ: 20 バイト(x86)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; JobId : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; JobTime : UINT_PTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; DaysOfMonth : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; DaysOfWeek : BYTE (+12, 1byte)  poke st,12,値  /  値 = peek(st,12)
; Flags : BYTE (+13, 1byte)  poke st,13,値  /  値 = peek(st,13)
; Command : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; AT_ENUM サイズ: 32 バイト(x64)
dim st, 8    ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; JobId : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; JobTime : UINT_PTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; DaysOfMonth : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; DaysOfWeek : BYTE (+20, 1byte)  poke st,20,値  /  値 = peek(st,20)
; Flags : BYTE (+21, 1byte)  poke st,21,値  /  値 = peek(st,21)
; Command : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global AT_ENUM
    #field int JobId
    #field intptr JobTime
    #field int DaysOfMonth
    #field byte DaysOfWeek
    #field byte Flags
    #field intptr Command
#endstruct

stdim st, AT_ENUM        ; NSTRUCT 変数を確保
st->JobId = 100
mes "JobId=" + st->JobId