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

NETCON_PROPERTIES

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

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

フィールド

フィールドサイズx64x86説明
guidIdGUID16+0+0ネットワーク接続を一意に識別するGUID。
pszwNameLPWSTR8/4+16+16接続の表示名。
pszwDeviceNameLPWSTR8/4+24+20接続に関連付くデバイス名。
StatusNETCON_STATUS4+32+24接続の状態(接続中/切断など)を示すNETCON_STATUS。
MediaTypeNETCON_MEDIATYPE4+36+28接続のメディア種別(LAN/WANなど)を示すNETCON_MEDIATYPE。
dwCharacterDWORD4+40+32接続の特性を示すビットフラグ(NCCF_*)。
clsidThisObjectGUID16+44+36この接続オブジェクトのCLSID。
clsidUiObjectGUID16+60+52この接続のUIオブジェクトのCLSID。

各言語での定義

#include <windows.h>

// NETCON_PROPERTIES  (x64 80 / x86 68 バイト)
typedef struct NETCON_PROPERTIES {
    GUID guidId;
    LPWSTR pszwName;
    LPWSTR pszwDeviceName;
    NETCON_STATUS Status;
    NETCON_MEDIATYPE MediaType;
    DWORD dwCharacter;
    GUID clsidThisObject;
    GUID clsidUiObject;
} NETCON_PROPERTIES;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NETCON_PROPERTIES
{
    public Guid guidId;
    public IntPtr pszwName;
    public IntPtr pszwDeviceName;
    public int Status;
    public int MediaType;
    public uint dwCharacter;
    public Guid clsidThisObject;
    public Guid clsidUiObject;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NETCON_PROPERTIES
    Public guidId As Guid
    Public pszwName As IntPtr
    Public pszwDeviceName As IntPtr
    Public Status As Integer
    Public MediaType As Integer
    Public dwCharacter As UInteger
    Public clsidThisObject As Guid
    Public clsidUiObject As Guid
End Structure
import ctypes
from ctypes import wintypes

class NETCON_PROPERTIES(ctypes.Structure):
    _fields_ = [
        ("guidId", GUID),
        ("pszwName", ctypes.c_void_p),
        ("pszwDeviceName", ctypes.c_void_p),
        ("Status", ctypes.c_int),
        ("MediaType", ctypes.c_int),
        ("dwCharacter", wintypes.DWORD),
        ("clsidThisObject", GUID),
        ("clsidUiObject", GUID),
    ]
#[repr(C)]
pub struct NETCON_PROPERTIES {
    pub guidId: GUID,
    pub pszwName: *mut core::ffi::c_void,
    pub pszwDeviceName: *mut core::ffi::c_void,
    pub Status: i32,
    pub MediaType: i32,
    pub dwCharacter: u32,
    pub clsidThisObject: GUID,
    pub clsidUiObject: GUID,
}
import "golang.org/x/sys/windows"

type NETCON_PROPERTIES struct {
	guidId windows.GUID
	pszwName uintptr
	pszwDeviceName uintptr
	Status int32
	MediaType int32
	dwCharacter uint32
	clsidThisObject windows.GUID
	clsidUiObject windows.GUID
}
type
  NETCON_PROPERTIES = record
    guidId: TGUID;
    pszwName: Pointer;
    pszwDeviceName: Pointer;
    Status: Integer;
    MediaType: Integer;
    dwCharacter: DWORD;
    clsidThisObject: TGUID;
    clsidUiObject: TGUID;
  end;
const NETCON_PROPERTIES = extern struct {
    guidId: GUID,
    pszwName: ?*anyopaque,
    pszwDeviceName: ?*anyopaque,
    Status: i32,
    MediaType: i32,
    dwCharacter: u32,
    clsidThisObject: GUID,
    clsidUiObject: GUID,
};
type
  NETCON_PROPERTIES {.bycopy.} = object
    guidId: GUID
    pszwName: pointer
    pszwDeviceName: pointer
    Status: int32
    MediaType: int32
    dwCharacter: uint32
    clsidThisObject: GUID
    clsidUiObject: GUID
struct NETCON_PROPERTIES
{
    GUID guidId;
    void* pszwName;
    void* pszwDeviceName;
    int Status;
    int MediaType;
    uint dwCharacter;
    GUID clsidThisObject;
    GUID clsidUiObject;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; NETCON_PROPERTIES サイズ: 68 バイト(x86)
dim st, 17    ; 4byte整数×17(構造体サイズ 68 / 4 切り上げ)
; guidId : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; pszwName : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszwDeviceName : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Status : NETCON_STATUS (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; MediaType : NETCON_MEDIATYPE (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwCharacter : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; clsidThisObject : GUID (+36, 16byte)  varptr(st)+36 を基点に操作(16byte:入れ子/配列)
; clsidUiObject : GUID (+52, 16byte)  varptr(st)+52 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NETCON_PROPERTIES サイズ: 80 バイト(x64)
dim st, 20    ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; guidId : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; pszwName : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszwDeviceName : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; Status : NETCON_STATUS (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; MediaType : NETCON_MEDIATYPE (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwCharacter : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; clsidThisObject : GUID (+44, 16byte)  varptr(st)+44 を基点に操作(16byte:入れ子/配列)
; clsidUiObject : GUID (+60, 16byte)  varptr(st)+60 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global NETCON_PROPERTIES
    #field GUID guidId
    #field intptr pszwName
    #field intptr pszwDeviceName
    #field int Status
    #field int MediaType
    #field int dwCharacter
    #field GUID clsidThisObject
    #field GUID clsidUiObject
#endstruct

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