Win32 API 日本語リファレンス
ホームStorage.FileSystem › NTMS_COMPUTERINFORMATION

NTMS_COMPUTERINFORMATION

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

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

フィールド

フィールドサイズx64x86説明
dwLibRequestPurgeTimeDWORD4+0+0完了したライブラリ要求を保持する時間。秒単位。
dwOpRequestPurgeTimeDWORD4+4+4完了したオペレータ要求を保持する時間。秒単位。
dwLibRequestFlagsDWORD4+8+8ライブラリ要求に関する動作フラグ。
dwOpRequestFlagsDWORD4+12+12オペレータ要求に関する動作フラグ。
dwMediaPoolPolicyDWORD4+16+16メディアプールに関するポリシーフラグ。

各言語での定義

#include <windows.h>

// NTMS_COMPUTERINFORMATION  (x64 20 / x86 20 バイト)
typedef struct NTMS_COMPUTERINFORMATION {
    DWORD dwLibRequestPurgeTime;
    DWORD dwOpRequestPurgeTime;
    DWORD dwLibRequestFlags;
    DWORD dwOpRequestFlags;
    DWORD dwMediaPoolPolicy;
} NTMS_COMPUTERINFORMATION;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NTMS_COMPUTERINFORMATION
{
    public uint dwLibRequestPurgeTime;
    public uint dwOpRequestPurgeTime;
    public uint dwLibRequestFlags;
    public uint dwOpRequestFlags;
    public uint dwMediaPoolPolicy;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NTMS_COMPUTERINFORMATION
    Public dwLibRequestPurgeTime As UInteger
    Public dwOpRequestPurgeTime As UInteger
    Public dwLibRequestFlags As UInteger
    Public dwOpRequestFlags As UInteger
    Public dwMediaPoolPolicy As UInteger
End Structure
import ctypes
from ctypes import wintypes

class NTMS_COMPUTERINFORMATION(ctypes.Structure):
    _fields_ = [
        ("dwLibRequestPurgeTime", wintypes.DWORD),
        ("dwOpRequestPurgeTime", wintypes.DWORD),
        ("dwLibRequestFlags", wintypes.DWORD),
        ("dwOpRequestFlags", wintypes.DWORD),
        ("dwMediaPoolPolicy", wintypes.DWORD),
    ]
#[repr(C)]
pub struct NTMS_COMPUTERINFORMATION {
    pub dwLibRequestPurgeTime: u32,
    pub dwOpRequestPurgeTime: u32,
    pub dwLibRequestFlags: u32,
    pub dwOpRequestFlags: u32,
    pub dwMediaPoolPolicy: u32,
}
import "golang.org/x/sys/windows"

type NTMS_COMPUTERINFORMATION struct {
	dwLibRequestPurgeTime uint32
	dwOpRequestPurgeTime uint32
	dwLibRequestFlags uint32
	dwOpRequestFlags uint32
	dwMediaPoolPolicy uint32
}
type
  NTMS_COMPUTERINFORMATION = record
    dwLibRequestPurgeTime: DWORD;
    dwOpRequestPurgeTime: DWORD;
    dwLibRequestFlags: DWORD;
    dwOpRequestFlags: DWORD;
    dwMediaPoolPolicy: DWORD;
  end;
const NTMS_COMPUTERINFORMATION = extern struct {
    dwLibRequestPurgeTime: u32,
    dwOpRequestPurgeTime: u32,
    dwLibRequestFlags: u32,
    dwOpRequestFlags: u32,
    dwMediaPoolPolicy: u32,
};
type
  NTMS_COMPUTERINFORMATION {.bycopy.} = object
    dwLibRequestPurgeTime: uint32
    dwOpRequestPurgeTime: uint32
    dwLibRequestFlags: uint32
    dwOpRequestFlags: uint32
    dwMediaPoolPolicy: uint32
struct NTMS_COMPUTERINFORMATION
{
    uint dwLibRequestPurgeTime;
    uint dwOpRequestPurgeTime;
    uint dwLibRequestFlags;
    uint dwOpRequestFlags;
    uint dwMediaPoolPolicy;
}

HSP用 定義

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

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

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