ホーム › System.HostComputeSystem › HCS_PROCESS_INFORMATION
HCS_PROCESS_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ProcessId | DWORD | 4 | +0 | +0 | コンテナ内で起動したプロセスのID。 |
| Reserved | DWORD | 4 | +4 | +4 | 予約フィールド。0であること。 |
| StdInput | HANDLE | 8/4 | +8 | +8 | 標準入力に接続されたハンドル。 |
| StdOutput | HANDLE | 8/4 | +16 | +12 | 標準出力に接続されたハンドル。 |
| StdError | HANDLE | 8/4 | +24 | +16 | 標準エラー出力に接続されたハンドル。 |
各言語での定義
#include <windows.h>
// HCS_PROCESS_INFORMATION (x64 32 / x86 20 バイト)
typedef struct HCS_PROCESS_INFORMATION {
DWORD ProcessId;
DWORD Reserved;
HANDLE StdInput;
HANDLE StdOutput;
HANDLE StdError;
} HCS_PROCESS_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HCS_PROCESS_INFORMATION
{
public uint ProcessId;
public uint Reserved;
public IntPtr StdInput;
public IntPtr StdOutput;
public IntPtr StdError;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HCS_PROCESS_INFORMATION
Public ProcessId As UInteger
Public Reserved As UInteger
Public StdInput As IntPtr
Public StdOutput As IntPtr
Public StdError As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class HCS_PROCESS_INFORMATION(ctypes.Structure):
_fields_ = [
("ProcessId", wintypes.DWORD),
("Reserved", wintypes.DWORD),
("StdInput", ctypes.c_void_p),
("StdOutput", ctypes.c_void_p),
("StdError", ctypes.c_void_p),
]#[repr(C)]
pub struct HCS_PROCESS_INFORMATION {
pub ProcessId: u32,
pub Reserved: u32,
pub StdInput: *mut core::ffi::c_void,
pub StdOutput: *mut core::ffi::c_void,
pub StdError: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type HCS_PROCESS_INFORMATION struct {
ProcessId uint32
Reserved uint32
StdInput uintptr
StdOutput uintptr
StdError uintptr
}type
HCS_PROCESS_INFORMATION = record
ProcessId: DWORD;
Reserved: DWORD;
StdInput: Pointer;
StdOutput: Pointer;
StdError: Pointer;
end;const HCS_PROCESS_INFORMATION = extern struct {
ProcessId: u32,
Reserved: u32,
StdInput: ?*anyopaque,
StdOutput: ?*anyopaque,
StdError: ?*anyopaque,
};type
HCS_PROCESS_INFORMATION {.bycopy.} = object
ProcessId: uint32
Reserved: uint32
StdInput: pointer
StdOutput: pointer
StdError: pointerstruct HCS_PROCESS_INFORMATION
{
uint ProcessId;
uint Reserved;
void* StdInput;
void* StdOutput;
void* StdError;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; HCS_PROCESS_INFORMATION サイズ: 20 バイト(x86)
dim st, 5 ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; ProcessId : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Reserved : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; StdInput : HANDLE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; StdOutput : HANDLE (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; StdError : HANDLE (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; HCS_PROCESS_INFORMATION サイズ: 32 バイト(x64)
dim st, 8 ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; ProcessId : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Reserved : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; StdInput : HANDLE (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; StdOutput : HANDLE (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; StdError : HANDLE (+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 HCS_PROCESS_INFORMATION
#field int ProcessId
#field int Reserved
#field intptr StdInput
#field intptr StdOutput
#field intptr StdError
#endstruct
stdim st, HCS_PROCESS_INFORMATION ; NSTRUCT 変数を確保
st->ProcessId = 100
mes "ProcessId=" + st->ProcessId