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送信された (キューに登録された) ジョブのジョブ識別子です。
JobTimeUINT_PTR8/4+8+4ジョブの実行が予定されている時刻へのポインターです。この時刻は、スケジュール サービスが動作しているコンピューターのローカル時刻であり、深夜 0 時からの経過時間をミリ秒単位で表します。
DaysOfMonthDWORD4+16+8

月の日を表すビット フラグのセットです。セットされている各ビットについて、対応する月の日に JobTime メンバーで指定された時刻にスケジュール済みジョブが実行されます。ビット 0 は月の 1 日目に対応し、以降も同様です。

ジョブが JobTime メンバーで指定された最初の機会に 1 回だけ実行されるようスケジュールされている場合、このビットマスクの値は 0 になります。

DaysOfWeekBYTE1+20+12

曜日を表すビット フラグのセットです。セットされている各ビットについて、対応する曜日に JobTime メンバーで指定された時刻にスケジュール済みジョブが実行されます。ビット 0 は月曜日に対応し、以降も同様です。

ジョブが JobTime メンバーで指定された最初の機会に 1 回だけ実行されるようスケジュールされている場合、このビットマスクの値は 0 になります。

FlagsBYTE1+21+13

ジョブのプロパティを表すビット フラグのセットです。このメンバーには、次の値の 1 つ以上を指定できます。

意味
JOB_RUN_PERIODICALLY
このフラグは元の値、つまりジョブが送信されたときの値と同じです。
JOB_EXEC_ERROR
このフラグがセットされている場合、スケジュール サービスが前回の実行予定時にジョブの実行に失敗したことを示します。
JOB_RUNS_TODAY
このフラグがセットされている場合、ジョブが当日中に実行される予定であることを示します。JobTime メンバーの値は、ジョブがキューに登録されているコンピューターの現在時刻より後になります。
JOB_NONINTERACTIVE
このフラグは元の値、つまりジョブが送信されたときの値と同じです。
CommandLPWSTR8/4+24+16実行するコマンド、バッチ プログラム、またはバイナリ ファイルの名前を格納した Unicode 文字列へのポインターです。

公式ドキュメント

AT_ENUM 構造体は、送信されたジョブに関する情報を格納します。 NetScheduleJobEnum 関数は、この構造体を使用して、送信されたジョブのキュー全体を列挙し、その情報を返します。

解説(Remarks)

1 回だけ実行されるジョブ、複数回実行されるジョブ、および削除されずに定期的に実行されるジョブをスケジュールするためのビット フラグの設定については、 NetScheduleJobAdd 関数を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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