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参加の種類を指定する列挙値です。
pJoinCertificateCERT_CONTEXT*8/4+8+4参加に使用される証明書の表現です。
pszDeviceIdLPWSTR8/4+16+8デバイスの識別子です。
pszIdpDomainLPWSTR8/4+24+12Azure Active Directory (Azure AD) を表す文字列です。
pszTenantIdLPWSTR8/4+32+16参加先の Azure AD テナントの識別子です。
pszJoinUserEmailLPWSTR8/4+40+20参加したアカウントのメールアドレスです。
pszTenantDisplayNameLPWSTR8/4+48+24参加したアカウントの表示名です。
pszMdmEnrollmentUrlLPWSTR8/4+56+28モバイル デバイス管理 (MDM) サービスへの登録に使用する URL です。
pszMdmTermsOfUseUrlLPWSTR8/4+64+32MDM サービスの利用規約に関する情報を提供する URL です。
pszMdmComplianceUrlLPWSTR8/4+72+36MDM サービスのコンプライアンスに関する情報を提供する URL です。
pszUserSettingSyncUrlLPWSTR8/4+80+40ユーザー設定を同期するための URL です。
pUserInfoDSREG_USER_INFO*8/4+88+44デバイスを Azure AD に参加させるために使用されたユーザー アカウントに関する情報です。

公式ドキュメント

デバイスが Microsoft Azure Active Directory にどのように参加しているかに関する情報を格納します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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