IRQ_DES_64
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| IRQD_Count | DWORD | 4 | +0 | +0 | リソースリストの場合:0 です。 リソース要件リストの場合:IRQ_RESOURCE 構造体内の要素数です。 | |||||||||||||||||||||||||||
| IRQD_Type | DWORD | 4 | +4 | +4 | 定数値 IRQType_Range に設定しなければなりません。 | |||||||||||||||||||||||||||
| IRQD_Flags | IRQD_FLAGS | 4 | +8 | +8 | 次の表に示す各フラグセットから、それぞれ 1 つのビットフラグを指定します。
| |||||||||||||||||||||||||||
| IRQD_Alloc_Num | DWORD | 4 | +12 | +12 | リソースリストの場合:デバイスに割り当てられた IRQ 回線の番号です。 リソース要件リストの場合:使用されません。 | |||||||||||||||||||||||||||
| IRQD_Affinity | ULONGLONG | 8 | +16 | +16 | リソースリストの場合:デバイスに割り当てられた IRQ 回線のプロセッサーアフィニティを表すビットマスクです。ビット 0 は 1 番目のプロセッサーを、ビット 2 は 2 番目のプロセッサーを表し、以降も同様です。すべてのプロセッサーを表すには、この値を -1 に設定します。 リソース要件リストの場合:使用されません。 - IRQD_Affinity.リソースリストの場合:デバイスに割り当てられた IRQ 回線のプロセッサーアフィニティを表すビットマスクです。ビット 0 は 1 番目のプロセッサーを、ビット 2 は 2 番目のプロセッサーを表し、以降も同様です。すべてのプロセッサーを表すには、この値を -1 に設定します。 - IRQD_Affinity.リソース要件リストの場合:使用されません。 - IRQD_Alloc_Num.リソースリストの場合:デバイスに割り当てられた IRQ 回線の番号です。 - IRQD_Alloc_Num.リソース要件リストの場合:使用されません。 - IRQD_Count.リソースリストの場合:0 です。 - IRQD_Count.リソース要件リストの場合:IRQ_RESOURCE 構造体内の要素数です。 | |||||||||||||||||||||||||||
公式ドキュメント
IRQ_DES 構造体は、デバイスインスタンスの IRQ 回線の使用状況を記述するリソースリストまたはリソース要件リストを指定するために使用されます。リソースリストおよびリソース要件リストの詳細については、Hardware Resources を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// IRQ_DES_64 (x64 24 / x86 24 バイト)
#pragma pack(push, 1)
typedef struct IRQ_DES_64 {
DWORD IRQD_Count;
DWORD IRQD_Type;
IRQD_FLAGS IRQD_Flags;
DWORD IRQD_Alloc_Num;
ULONGLONG IRQD_Affinity;
} IRQ_DES_64;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct IRQ_DES_64
{
public uint IRQD_Count;
public uint IRQD_Type;
public uint IRQD_Flags;
public uint IRQD_Alloc_Num;
public ulong IRQD_Affinity;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure IRQ_DES_64
Public IRQD_Count As UInteger
Public IRQD_Type As UInteger
Public IRQD_Flags As UInteger
Public IRQD_Alloc_Num As UInteger
Public IRQD_Affinity As ULong
End Structureimport ctypes
from ctypes import wintypes
class IRQ_DES_64(ctypes.Structure):
_pack_ = 1
_fields_ = [
("IRQD_Count", wintypes.DWORD),
("IRQD_Type", wintypes.DWORD),
("IRQD_Flags", wintypes.DWORD),
("IRQD_Alloc_Num", wintypes.DWORD),
("IRQD_Affinity", ctypes.c_ulonglong),
]#[repr(C, packed(1))]
pub struct IRQ_DES_64 {
pub IRQD_Count: u32,
pub IRQD_Type: u32,
pub IRQD_Flags: u32,
pub IRQD_Alloc_Num: u32,
pub IRQD_Affinity: u64,
}import "golang.org/x/sys/windows"
type IRQ_DES_64 struct {
IRQD_Count uint32
IRQD_Type uint32
IRQD_Flags uint32
IRQD_Alloc_Num uint32
IRQD_Affinity uint64
}type
IRQ_DES_64 = packed record
IRQD_Count: DWORD;
IRQD_Type: DWORD;
IRQD_Flags: DWORD;
IRQD_Alloc_Num: DWORD;
IRQD_Affinity: UInt64;
end;const IRQ_DES_64 = extern struct {
IRQD_Count: u32,
IRQD_Type: u32,
IRQD_Flags: u32,
IRQD_Alloc_Num: u32,
IRQD_Affinity: u64,
};type
IRQ_DES_64 {.packed.} = object
IRQD_Count: uint32
IRQD_Type: uint32
IRQD_Flags: uint32
IRQD_Alloc_Num: uint32
IRQD_Affinity: uint64align(1)
struct IRQ_DES_64
{
uint IRQD_Count;
uint IRQD_Type;
uint IRQD_Flags;
uint IRQD_Alloc_Num;
ulong IRQD_Affinity;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IRQ_DES_64 サイズ: 24 バイト(x64)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; IRQD_Count : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; IRQD_Type : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; IRQD_Flags : IRQD_FLAGS (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; IRQD_Alloc_Num : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; IRQD_Affinity : ULONGLONG (+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 IRQ_DES_64, pack=1
#field int IRQD_Count
#field int IRQD_Type
#field int IRQD_Flags
#field int IRQD_Alloc_Num
#field int64 IRQD_Affinity
#endstruct
stdim st, IRQ_DES_64 ; NSTRUCT 変数を確保
st->IRQD_Count = 100
mes "IRQD_Count=" + st->IRQD_Count