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

AT_INFO

構造体
サイズx64: 24 バイト / x86: 16 バイト

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

フィールド

フィールドサイズx64x86説明
JobTimeUINT_PTR8/4+0+0ジョブの実行がスケジュールされている時刻を示す値へのポインターです。この時刻は、スケジュール サービスが実行されているコンピューターのローカル時刻であり、午前 0 時を起点としてミリ秒単位で表されます。
DaysOfMonthDWORD4+8+4

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

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

DaysOfWeekBYTE1+12+8

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

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

FlagsBYTE1+13+9

ジョブのプロパティを表すビット フラグのセットです。

NetScheduleJobAdd 関数の呼び出しによってジョブを登録するときは、次のいずれかの値を指定できます。

意味
JOB_RUN_PERIODICALLY
このフラグを設定すると、ジョブは DaysOfMonth メンバーまたは DaysOfWeek メンバーで対応するビットが設定されている日ごとに実行され、その後も実行され続けます。ジョブは実行後に削除されません。

このフラグがクリアされている場合、ジョブはこれらのメンバーで設定されたビットごとに 1 回だけ実行されます。ジョブは 1 回実行された後に削除されます。

JOB_ADD_CURRENT_DATE
このフラグを設定すると、ジョブはキューに登録されたコンピューターにおける JobTime メンバーの最初の機会に実行されます。

このフラグの設定は、DaysOfMonth メンバーで当日に対応するビットを設定することと同等です。

JOB_NONINTERACTIVE
このフラグを設定すると、ジョブは対話的に実行されません。

このフラグがクリアされている場合、ジョブは対話的に実行されます。

NetScheduleJobGetInfo を呼び出してジョブ情報を取得すると、この関数は次の値のうち 1 つ以上を返すことがあります。

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

公式ドキュメント

            <b>AT_INFO</b> 構造体には、ジョブに関する情報が格納されます。

NetScheduleJobAdd 関数は、ジョブをスケジュールする際の情報を指定するためにこの構造体を使用します。 NetScheduleJobGetInfo 関数は、既に登録されているジョブに関する情報を取得するためにこの構造体を使用します。

解説(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_INFO  (x64 24 / x86 16 バイト)
typedef struct AT_INFO {
    UINT_PTR JobTime;
    DWORD DaysOfMonth;
    BYTE DaysOfWeek;
    BYTE Flags;
    LPWSTR Command;
} AT_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AT_INFO
{
    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_INFO
    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_INFO(ctypes.Structure):
    _fields_ = [
        ("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_INFO {
    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_INFO struct {
	JobTime uintptr
	DaysOfMonth uint32
	DaysOfWeek byte
	Flags byte
	Command uintptr
}
type
  AT_INFO = record
    JobTime: NativeUInt;
    DaysOfMonth: DWORD;
    DaysOfWeek: Byte;
    Flags: Byte;
    Command: Pointer;
  end;
const AT_INFO = extern struct {
    JobTime: usize,
    DaysOfMonth: u32,
    DaysOfWeek: u8,
    Flags: u8,
    Command: ?*anyopaque,
};
type
  AT_INFO {.bycopy.} = object
    JobTime: uint
    DaysOfMonth: uint32
    DaysOfWeek: uint8
    Flags: uint8
    Command: pointer
struct AT_INFO
{
    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_INFO サイズ: 16 バイト(x86)
dim st, 4    ; 4byte整数×4(構造体サイズ 16 / 4 切り上げ)
; JobTime : UINT_PTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DaysOfMonth : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; DaysOfWeek : BYTE (+8, 1byte)  poke st,8,値  /  値 = peek(st,8)
; Flags : BYTE (+9, 1byte)  poke st,9,値  /  値 = peek(st,9)
; Command : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; AT_INFO サイズ: 24 バイト(x64)
dim st, 6    ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; JobTime : UINT_PTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; 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, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global AT_INFO
    #field intptr JobTime
    #field int DaysOfMonth
    #field byte DaysOfWeek
    #field byte Flags
    #field intptr Command
#endstruct

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