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

DSREG_JOIN_INFO

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

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

フィールド

フィールドサイズx64x86説明
joinTypeDSREG_JOIN_TYPE4+0+0デバイス参加の種別を示す列挙値(Azure AD参加/登録等)。
pJoinCertificateCERT_CONTEXT*8/4+8+4参加に用いたデバイス証明書のCERT_CONTEXTへのポインタ。
pszDeviceIdLPWSTR8/4+16+8登録されたデバイスの一意識別子を表す文字列へのポインタ。
pszIdpDomainLPWSTR8/4+24+12IDプロバイダーのドメイン名を表す文字列へのポインタ。
pszTenantIdLPWSTR8/4+32+16参加先テナントの一意識別子を表す文字列へのポインタ。
pszJoinUserEmailLPWSTR8/4+40+20参加を実行したユーザーのメールアドレスを表す文字列へのポインタ。
pszTenantDisplayNameLPWSTR8/4+48+24テナントの表示名を表す文字列へのポインタ。
pszMdmEnrollmentUrlLPWSTR8/4+56+28MDM登録のためのURLを表す文字列へのポインタ。NULL可。
pszMdmTermsOfUseUrlLPWSTR8/4+64+32MDM利用規約のURLを表す文字列へのポインタ。NULL可。
pszMdmComplianceUrlLPWSTR8/4+72+36MDMコンプライアンス確認用URLを表す文字列へのポインタ。NULL可。
pszUserSettingSyncUrlLPWSTR8/4+80+40ユーザー設定同期用のURLを表す文字列へのポインタ。NULL可。
pUserInfoDSREG_USER_INFO*8/4+88+44登録ユーザー情報を保持するDSREG_USER_INFO構造体へのポインタ。

各言語での定義

#include <windows.h>

// DSREG_JOIN_INFO  (x64 96 / x86 48 バイト)
typedef struct DSREG_JOIN_INFO {
    DSREG_JOIN_TYPE joinType;
    CERT_CONTEXT* pJoinCertificate;
    LPWSTR pszDeviceId;
    LPWSTR pszIdpDomain;
    LPWSTR pszTenantId;
    LPWSTR pszJoinUserEmail;
    LPWSTR pszTenantDisplayName;
    LPWSTR pszMdmEnrollmentUrl;
    LPWSTR pszMdmTermsOfUseUrl;
    LPWSTR pszMdmComplianceUrl;
    LPWSTR pszUserSettingSyncUrl;
    DSREG_USER_INFO* pUserInfo;
} DSREG_JOIN_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DSREG_JOIN_INFO
{
    public int joinType;
    public IntPtr pJoinCertificate;
    public IntPtr pszDeviceId;
    public IntPtr pszIdpDomain;
    public IntPtr pszTenantId;
    public IntPtr pszJoinUserEmail;
    public IntPtr pszTenantDisplayName;
    public IntPtr pszMdmEnrollmentUrl;
    public IntPtr pszMdmTermsOfUseUrl;
    public IntPtr pszMdmComplianceUrl;
    public IntPtr pszUserSettingSyncUrl;
    public IntPtr pUserInfo;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DSREG_JOIN_INFO
    Public joinType As Integer
    Public pJoinCertificate As IntPtr
    Public pszDeviceId As IntPtr
    Public pszIdpDomain As IntPtr
    Public pszTenantId As IntPtr
    Public pszJoinUserEmail As IntPtr
    Public pszTenantDisplayName As IntPtr
    Public pszMdmEnrollmentUrl As IntPtr
    Public pszMdmTermsOfUseUrl As IntPtr
    Public pszMdmComplianceUrl As IntPtr
    Public pszUserSettingSyncUrl As IntPtr
    Public pUserInfo As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class DSREG_JOIN_INFO(ctypes.Structure):
    _fields_ = [
        ("joinType", ctypes.c_int),
        ("pJoinCertificate", ctypes.c_void_p),
        ("pszDeviceId", ctypes.c_void_p),
        ("pszIdpDomain", ctypes.c_void_p),
        ("pszTenantId", ctypes.c_void_p),
        ("pszJoinUserEmail", ctypes.c_void_p),
        ("pszTenantDisplayName", ctypes.c_void_p),
        ("pszMdmEnrollmentUrl", ctypes.c_void_p),
        ("pszMdmTermsOfUseUrl", ctypes.c_void_p),
        ("pszMdmComplianceUrl", ctypes.c_void_p),
        ("pszUserSettingSyncUrl", ctypes.c_void_p),
        ("pUserInfo", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct DSREG_JOIN_INFO {
    pub joinType: i32,
    pub pJoinCertificate: *mut core::ffi::c_void,
    pub pszDeviceId: *mut core::ffi::c_void,
    pub pszIdpDomain: *mut core::ffi::c_void,
    pub pszTenantId: *mut core::ffi::c_void,
    pub pszJoinUserEmail: *mut core::ffi::c_void,
    pub pszTenantDisplayName: *mut core::ffi::c_void,
    pub pszMdmEnrollmentUrl: *mut core::ffi::c_void,
    pub pszMdmTermsOfUseUrl: *mut core::ffi::c_void,
    pub pszMdmComplianceUrl: *mut core::ffi::c_void,
    pub pszUserSettingSyncUrl: *mut core::ffi::c_void,
    pub pUserInfo: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type DSREG_JOIN_INFO struct {
	joinType int32
	pJoinCertificate uintptr
	pszDeviceId uintptr
	pszIdpDomain uintptr
	pszTenantId uintptr
	pszJoinUserEmail uintptr
	pszTenantDisplayName uintptr
	pszMdmEnrollmentUrl uintptr
	pszMdmTermsOfUseUrl uintptr
	pszMdmComplianceUrl uintptr
	pszUserSettingSyncUrl uintptr
	pUserInfo uintptr
}
type
  DSREG_JOIN_INFO = record
    joinType: Integer;
    pJoinCertificate: Pointer;
    pszDeviceId: Pointer;
    pszIdpDomain: Pointer;
    pszTenantId: Pointer;
    pszJoinUserEmail: Pointer;
    pszTenantDisplayName: Pointer;
    pszMdmEnrollmentUrl: Pointer;
    pszMdmTermsOfUseUrl: Pointer;
    pszMdmComplianceUrl: Pointer;
    pszUserSettingSyncUrl: Pointer;
    pUserInfo: Pointer;
  end;
const DSREG_JOIN_INFO = extern struct {
    joinType: i32,
    pJoinCertificate: ?*anyopaque,
    pszDeviceId: ?*anyopaque,
    pszIdpDomain: ?*anyopaque,
    pszTenantId: ?*anyopaque,
    pszJoinUserEmail: ?*anyopaque,
    pszTenantDisplayName: ?*anyopaque,
    pszMdmEnrollmentUrl: ?*anyopaque,
    pszMdmTermsOfUseUrl: ?*anyopaque,
    pszMdmComplianceUrl: ?*anyopaque,
    pszUserSettingSyncUrl: ?*anyopaque,
    pUserInfo: ?*anyopaque,
};
type
  DSREG_JOIN_INFO {.bycopy.} = object
    joinType: int32
    pJoinCertificate: pointer
    pszDeviceId: pointer
    pszIdpDomain: pointer
    pszTenantId: pointer
    pszJoinUserEmail: pointer
    pszTenantDisplayName: pointer
    pszMdmEnrollmentUrl: pointer
    pszMdmTermsOfUseUrl: pointer
    pszMdmComplianceUrl: pointer
    pszUserSettingSyncUrl: pointer
    pUserInfo: pointer
struct DSREG_JOIN_INFO
{
    int joinType;
    void* pJoinCertificate;
    void* pszDeviceId;
    void* pszIdpDomain;
    void* pszTenantId;
    void* pszJoinUserEmail;
    void* pszTenantDisplayName;
    void* pszMdmEnrollmentUrl;
    void* pszMdmTermsOfUseUrl;
    void* pszMdmComplianceUrl;
    void* pszUserSettingSyncUrl;
    void* pUserInfo;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DSREG_JOIN_INFO サイズ: 48 バイト(x86)
dim st, 12    ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; joinType : DSREG_JOIN_TYPE (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pJoinCertificate : CERT_CONTEXT* (+4, 4byte)  varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; pszDeviceId : LPWSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; pszIdpDomain : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; pszTenantId : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszJoinUserEmail : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pszTenantDisplayName : LPWSTR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; pszMdmEnrollmentUrl : LPWSTR (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; pszMdmTermsOfUseUrl : LPWSTR (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; pszMdmComplianceUrl : LPWSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; pszUserSettingSyncUrl : LPWSTR (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; pUserInfo : DSREG_USER_INFO* (+44, 4byte)  varptr(st)+44 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DSREG_JOIN_INFO サイズ: 96 バイト(x64)
dim st, 24    ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; joinType : DSREG_JOIN_TYPE (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pJoinCertificate : CERT_CONTEXT* (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; pszDeviceId : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszIdpDomain : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pszTenantId : LPWSTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pszJoinUserEmail : LPWSTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; pszTenantDisplayName : LPWSTR (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pszMdmEnrollmentUrl : LPWSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pszMdmTermsOfUseUrl : LPWSTR (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pszMdmComplianceUrl : LPWSTR (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; pszUserSettingSyncUrl : LPWSTR (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; pUserInfo : DSREG_USER_INFO* (+88, 8byte)  varptr(st)+88 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DSREG_JOIN_INFO
    #field int joinType
    #field intptr pJoinCertificate
    #field intptr pszDeviceId
    #field intptr pszIdpDomain
    #field intptr pszTenantId
    #field intptr pszJoinUserEmail
    #field intptr pszTenantDisplayName
    #field intptr pszMdmEnrollmentUrl
    #field intptr pszMdmTermsOfUseUrl
    #field intptr pszMdmComplianceUrl
    #field intptr pszUserSettingSyncUrl
    #field intptr pUserInfo
#endstruct

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