Win32 API 日本語リファレンス
ホームNetworking.ActiveDirectory › ADSVALUE

ADSVALUE

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

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

フィールド

フィールドサイズx64x86説明
dwTypeADSTYPE4+0+0構造体の共用体メンバーを解釈するために使用されるデータ型です。このメンバーの値は ADSTYPEENUM 列挙型から取得されます。
Anonymous_Anonymous_e__Union16+8+8dwTypeに応じた実際の値を保持する無名共用体。

共用体: _Anonymous_e__Union x64 16B / x86 16B

フィールドサイズx64x86説明
DNStringWORD*8/4+0+0ディレクトリサービスオブジェクトの識別名 (パス) を示す、null で終わる Unicode 文字列です。ADSI 単純データ型ADS_DN_STRING として定義されます。
CaseExactStringWORD*8/4+0+0大文字と小文字を区別して解釈される、null で終わる Unicode 文字列です。ADSI 単純データ型ADS_CASE_EXACT_STRING として定義されます。
CaseIgnoreStringWORD*8/4+0+0大文字と小文字を区別せずに解釈される、null で終わる Unicode 文字列です。ADSI 単純データ型ADS_CASE_IGNORE_STRING として定義されます。
PrintableStringWORD*8/4+0+0表示または印刷が可能な、null で終わる Unicode 文字列です。ADSI 単純データ型ADS_PRINTABLE_STRING として定義されます。
NumericStringWORD*8/4+0+0テキストとして解釈される数字を含む、null で終わる Unicode 文字列です。ADSI 単純データ型ADS_NUMERIC_STRING として定義されます。
BooleanDWORD4+0+0ブール値です。ADSI 単純データ型ADS_BOOLEAN として定義されます。
IntegerDWORD4+0+0整数値です。ADSI 単純データ型ADS_INTEGER として定義されます。
OctetStringADS_OCTET_STRING16/8+0+0オクテット文字列です。ADSI 定義のデータ型である ADS_OCTET_STRING として定義されます。
UTCTimeSYSTEMTIME16+0+0協定世界時 (UTC) として指定される時刻です。ADSI 単純データ型ADS_UTC_TIME として定義されます。
LargeIntegerLONGLONG8+0+0長整数値です。ADSI 単純データ型ADS_LARGE_INTEGER として定義されます。
ClassNameWORD*8/4+0+0クラス名の文字列です。ADSI 単純データ型ADS_OBJECT_CLASS として定義されます。
ProviderSpecificADS_PROV_SPECIFIC16/8+0+0プロバイダー固有の構造体です。ADSI 定義のデータ型である ADS_PROV_SPECIFIC として定義されます。
pCaseIgnoreListADS_CASEIGNORE_LIST*8/4+0+0ADSI 定義のデータ型である ADS_CASEIGNORE_LIST へのポインターです。
pOctetListADS_OCTET_LIST*8/4+0+0ADSI 定義のデータ型である ADS_OCTET_LIST のリストへのポインターです。
pPathADS_PATH*8/4+0+0ADSI 定義のデータ型である ADS_PATH 名へのポインターです。
pPostalAddressADS_POSTALADDRESS*8/4+0+0ADSI 定義のデータ型である ADS_POSTALADDRESS データへのポインターです。
TimestampADS_TIMESTAMP8+0+0ADSI 定義のデータ型である ADS_TIMESTAMP 型のタイムスタンプです。
BackLinkADS_BACKLINK16/8+0+0ADSI 定義のデータ型である ADS_BACKLINK 型のリンクです。
pTypedNameADS_TYPEDNAME*8/4+0+0ADSI 定義のデータ型である ADS_TYPEDNAME 名へのポインターです。
HoldADS_HOLD16/8+0+0ADSI 定義のデータ型である ADS_HOLD 型のデータ構造です。
pNetAddressADS_NETADDRESS*8/4+0+0ADSI 定義のデータ型である ADS_NETADDRESS データへのポインターです。
pReplicaPointerADS_REPLICAPOINTER*8/4+0+0ADSI 定義のデータ型である ADS_REPLICAPOINTER のレプリカポインターへのポインターです。
pFaxNumberADS_FAXNUMBER*8/4+0+0ADSI 定義のデータ型である ADS_FAXNUMBER のファクシミリ番号へのポインターです。
EmailADS_EMAIL16/8+0+0ADSI 定義のデータ型である ADS_EMAIL のユーザーの電子メールアドレスです。
SecurityDescriptorADS_NT_SECURITY_DESCRIPTOR16/8+0+0Windows のセキュリティ記述子です。ADSI 定義のデータ型である ADS_NT_SECURITY_DESCRIPTOR として定義されます。
pDNWithBinaryADS_DN_WITH_BINARY*8/4+0+0オブジェクトの識別名をその GUID 値に対応付ける ADS_DN_WITH_BINARY 構造体へのポインターです。
pDNWithStringADS_DN_WITH_STRING*8/4+0+0オブジェクトの識別名を不変の文字列値に対応付ける ADS_DN_WITH_STRING 構造体へのポインターです。

公式ドキュメント

ADSVALUE 構造体は、ADSI データ型として指定された値を格納します。これらのデータ型には、ADSI 単純データ型、または C 形式の構造体を含む ADSI 定義のカスタムデータ型を使用できます。

ADS_ATTR_INFO 構造体は、ADSVALUE 構造体の配列を保持します。各 ADSVALUE 構造体は、1 つの属性値を保持します。

解説(Remarks)

ADSVALUE 構造体のメンバーは、属性のデータ型を指定します。詳細情報とコード例については、ADS_ATTR_INFO を参照してください。

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

各言語での定義

#include <windows.h>

// ADSVALUE  (x64 24 / x86 24 バイト)
typedef struct ADSVALUE {
    ADSTYPE dwType;
    _Anonymous_e__Union Anonymous;
} ADSVALUE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ADSVALUE
{
    public int dwType;
    public _Anonymous_e__Union Anonymous;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ADSVALUE
    Public dwType As Integer
    Public Anonymous As _Anonymous_e__Union
End Structure
import ctypes
from ctypes import wintypes

class ADSVALUE(ctypes.Structure):
    _fields_ = [
        ("dwType", ctypes.c_int),
        ("Anonymous", _Anonymous_e__Union),
    ]
#[repr(C)]
pub struct ADSVALUE {
    pub dwType: i32,
    pub Anonymous: _Anonymous_e__Union,
}
import "golang.org/x/sys/windows"

type ADSVALUE struct {
	dwType int32
	Anonymous _Anonymous_e__Union
}
type
  ADSVALUE = record
    dwType: Integer;
    Anonymous: _Anonymous_e__Union;
  end;
const ADSVALUE = extern struct {
    dwType: i32,
    Anonymous: _Anonymous_e__Union,
};
type
  ADSVALUE {.bycopy.} = object
    dwType: int32
    Anonymous: _Anonymous_e__Union
struct ADSVALUE
{
    int dwType;
    _Anonymous_e__Union Anonymous;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ADSVALUE サイズ: 24 バイト(x64)
dim st, 6    ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; dwType : ADSTYPE (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Anonymous : _Anonymous_e__Union (+8, 16byte)  varptr(st)+8 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ADSVALUE
    #field int dwType
    #field byte Anonymous 16
#endstruct

stdim st, ADSVALUE        ; NSTRUCT 変数を確保
st->dwType = 100
mes "dwType=" + st->dwType
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。