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

DSBROWSEINFOW

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

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

フィールド

フィールドサイズx64x86説明
cbStructDWORD4+0+0DSBROWSEINFO 構造体のサイズをバイト単位で格納します。これは DsBrowseForContainer 関数がバージョン管理のために使用します。
hwndOwnerHWND8/4+8+4コンテナー ブラウザー ダイアログ ボックスの親として使用されるウィンドウのハンドルです。
pszCaptionLPWSTR8/4+16+8ダイアログ ボックスのキャプションを格納した NULL 終端文字列へのポインターです。このメンバーが NULL の場合は、既定のキャプションが使用されます。
pszTitleLPWSTR8/4+24+12ダイアログ ボックス内のツリー コントロールの上に表示する追加テキストを格納した NULL 終端文字列へのポインターです。このメンバーが NULL の場合、追加のテキストは表示されません。
pszRootLPWSTR8/4+32+16ダイアログ ボックスのルートに配置されるコンテナーの ADsPath を格納した NULL 終端 Unicode 文字列へのポインターです。ユーザーはダイアログ ボックスを使用してこのレベルより上位へ移動することはできません。
pszPathLPWSTR8/4+40+20ダイアログで選択されたコンテナーの ADsPath を受け取る NULL 終端 Unicode 文字列へのポインターです。この文字列は、cchPath がパス全体を保持するのに十分な大きさでない場合でも、常に NULL 終端されます。dwFlagsDSBI_EXPANDONOPEN フラグが含まれている場合、このメンバーには、ダイアログ ボックスで最初に選択されるコンテナーの ADsPath を格納します。
cchPathDWORD4+48+24pszPath バッファーのサイズを WCHAR 文字単位で格納します。
dwFlagsDWORD4+52+28

ダイアログ ボックスの動作を定義するフラグのセットを格納します。0、または次の値のうち 1 つ以上の組み合わせを指定できます。

DSBI_NOBUTTONS (1 (0x1))

+ ボタンと - ボタンをダイアログ ボックスに表示しません。

DSBI_NOLINES (2 (0x2))

ダイアログ ボックス内のオブジェクトを接続する線を表示しません。

DSBI_NOLINESATROOT (4 (0x4))

ルート オブジェクトより上の線とボタンを表示しません。

DSBI_CHECKBOXES (256 (0x100))

ツリー内の各項目の横にチェック ボックスを配置します。ユーザーはマウスを使用してこのチェック ボックスをオンまたはオフにできます。ただし、項目のチェック状態を設定または取得する手段がないため、現在のところ用途は限られています。

DSBI_NOROOT (65536 (0x10000))

pszRoot で指定されたルート オブジェクトは表示されず、ルートの直下の子オブジェクトがツリーのルートに表示されます。pszRootNULL の場合、またはこのメンバーに DSBI_ENTIREDIRECTORY が含まれている場合、このフラグは効果がありません。

DSBI_INCLUDEHIDDEN (131072 (0x20000))

非表示のオブジェクトをダイアログ ボックスに含めます。

DSBI_EXPANDONOPEN (262144 (0x40000))

ダイアログ ボックスが開いたときに、pszPath で指定されたコンテナーが表示され、選択された状態になります。

DSBI_ENTIREDIRECTORY (589824 (0x90000))

pszRoot で指定されたサーバー、または既定ではユーザーがログオンしているドメインに対して信頼されているすべてのドメインを含めます。

DSBI_RETURN_FORMAT (1048576 (0x100000))

dwReturnFormat メンバーが有効であることを示します。このフラグが設定されていない場合、パスの形式は既定で X.500 になります。

DSBI_HASCREDENTIALS (2097152 (0x200000))

pUserNamepPassword がアクセス資格情報として使用されます。それ以外の場合、このメンバーに DSBI_SIMPLEAUTHENTICATE が含まれていなければ、ダイアログは呼び出し元スレッドのセキュリティ コンテキストを使用します。

DSBI_IGNORETREATASLEAF (4194304 (0x400000))

オブジェクトをダイアログ ボックスに表示するかどうかを判断する際に、treatAsLeaf 表示指定子を無視します。

DSBI_SIMPLEAUTHENTICATE (8388608 (0x800000))

ADsOpenObject を呼び出すときに、セキュリティで保護された認証が不要であることを示します。

DSBI_RETURNOBJECTCLASS (16777216 (0x1000000))

pszObjectClasscchObjectClass が有効であり、値を格納する必要があることを示します。

DSBI_DONTSIGNSEAL (33554432 (0x2000000))

ディレクトリ サービスとの通信時に署名と封印を使用しないことを示します。

pfnCallbackBFFCALLBACK8/4+56+32コンテナー ブラウザー ダイアログ ボックスから通知を受け取る、アプリケーション定義の BFFCallBack コールバック関数へのポインターです。使用しない場合は、このメンバーを NULL に設定します。
lParamLPARAM8/4+64+36pfnCallback へのすべての呼び出しで lpData パラメーターとして渡される、アプリケーション定義の 32 ビット値を格納します。pfnCallbackNULL の場合、このメンバーは無視されます。
dwReturnFormatDWORD4+72+40pszPath で返される ADSI パスの形式を指定する ADS_FORMAT_ENUM 値のいずれかを格納します。
pUserNameLPWSTR8/4+80+44資格情報として使用されるユーザー名を格納した Unicode 文字列へのポインターです。dwFlagsDSBI_HASCREDENTIALS フラグが設定されていない場合、このメンバーは無視されます。このメンバーが NULL の場合は、現在ログオンしているユーザー名が使用されます。
pPasswordLPWSTR8/4+88+48資格情報として使用されるパスワードを格納した Unicode 文字列へのポインターです。dwFlagsDSBI_HASCREDENTIALS フラグが設定されていない場合、このメンバーは無視されます。このメンバーが NULL の場合は、現在ログオンしているユーザーのパスワードが使用されます。
pszObjectClassLPWSTR8/4+96+52選択されたオブジェクトのクラス文字列を受け取る Unicode 文字列バッファーへのポインターです。dwFlagsDSBI_RETURNOBJECTCLASS フラグが設定されていない場合、このメンバーは無視されます。
cchObjectClassDWORD4+104+56

pszObjectClass バッファーのサイズを WCHAR 文字単位で格納します。

- dwFlags.DSBI_CHECKBOXES (256 (0x100))

ツリー内の各項目の横にチェック ボックスを配置します。ユーザーはマウスを使用してこのチェック ボックスをオンまたはオフにできます。ただし、項目のチェック状態を設定または取得する手段がないため、現在のところ用途は限られています。

- dwFlags.DSBI_DONTSIGNSEAL (33554432 (0x2000000))

ディレクトリ サービスとの通信時に署名と封印を使用しないことを示します。

- dwFlags.DSBI_ENTIREDIRECTORY (589824 (0x90000))

pszRoot で指定されたサーバー、または既定ではユーザーがログオンしているドメインに対して信頼されているすべてのドメインを含めます。

- dwFlags.DSBI_EXPANDONOPEN (262144 (0x40000))

ダイアログ ボックスが開いたときに、pszPath で指定されたコンテナーが表示され、選択された状態になります。

- dwFlags.DSBI_HASCREDENTIALS (2097152 (0x200000))

pUserNamepPassword がアクセス資格情報として使用されます。それ以外の場合、このメンバーに DSBI_SIMPLEAUTHENTICATE が含まれていなければ、ダイアログは呼び出し元スレッドのセキュリティ コンテキストを使用します。

- dwFlags.DSBI_IGNORETREATASLEAF (4194304 (0x400000))

オブジェクトをダイアログ ボックスに表示するかどうかを判断する際に、treatAsLeaf 表示指定子を無視します。

- dwFlags.DSBI_INCLUDEHIDDEN (131072 (0x20000))

非表示のオブジェクトをダイアログ ボックスに含めます。

- dwFlags.DSBI_NOBUTTONS (1 (0x1))

+ ボタンと - ボタンをダイアログ ボックスに表示しません。

- dwFlags.DSBI_NOLINES (2 (0x2))

ダイアログ ボックス内のオブジェクトを接続する線を表示しません。

- dwFlags.DSBI_NOLINESATROOT (4 (0x4))

ルート オブジェクトより上の線とボタンを表示しません。

- dwFlags.DSBI_NOROOT (65536 (0x10000))

pszRoot で指定されたルート オブジェクトは表示されず、ルートの直下の子オブジェクトがツリーのルートに表示されます。pszRootNULL の場合、またはこのメンバーに DSBI_ENTIREDIRECTORY が含まれている場合、このフラグは効果がありません。

- dwFlags.DSBI_RETURNOBJECTCLASS (16777216 (0x1000000))

pszObjectClasscchObjectClass が有効であり、値を格納する必要があることを示します。

- dwFlags.DSBI_RETURN_FORMAT (1048576 (0x100000))

dwReturnFormat メンバーが有効であることを示します。このフラグが設定されていない場合、パスの形式は既定で X.500 になります。

- dwFlags.DSBI_SIMPLEAUTHENTICATE (8388608 (0x800000))

ADsOpenObject を呼び出すときに、セキュリティで保護された認証が不要であることを示します。

公式ドキュメント

DSBROWSEINFO 構造体は、 DsBrowseForContainer 関数と共に使用し、Active Directory コンテナー ブラウザー ダイアログ ボックスに関するデータの受け渡しを行います。

解説(Remarks)

メモ

dsclient.h ヘッダーは、UNICODE プリプロセッサ定数の定義に応じてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして、DSBROWSEINFO を定義しています。エンコードに依存しないエイリアスの使用と、エンコードに依存するコードを混在させると、不整合が生じ、コンパイル エラーや実行時エラーの原因となる場合があります。詳細については、「Conventions for Function Prototypes」を参照してください。

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

各言語での定義

#include <windows.h>

// DSBROWSEINFOW  (x64 112 / x86 60 バイト)
typedef struct DSBROWSEINFOW {
    DWORD cbStruct;
    HWND hwndOwner;
    LPWSTR pszCaption;
    LPWSTR pszTitle;
    LPWSTR pszRoot;
    LPWSTR pszPath;
    DWORD cchPath;
    DWORD dwFlags;
    BFFCALLBACK pfnCallback;
    LPARAM lParam;
    DWORD dwReturnFormat;
    LPWSTR pUserName;
    LPWSTR pPassword;
    LPWSTR pszObjectClass;
    DWORD cchObjectClass;
} DSBROWSEINFOW;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DSBROWSEINFOW
{
    public uint cbStruct;
    public IntPtr hwndOwner;
    public IntPtr pszCaption;
    public IntPtr pszTitle;
    public IntPtr pszRoot;
    public IntPtr pszPath;
    public uint cchPath;
    public uint dwFlags;
    public IntPtr pfnCallback;
    public IntPtr lParam;
    public uint dwReturnFormat;
    public IntPtr pUserName;
    public IntPtr pPassword;
    public IntPtr pszObjectClass;
    public uint cchObjectClass;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DSBROWSEINFOW
    Public cbStruct As UInteger
    Public hwndOwner As IntPtr
    Public pszCaption As IntPtr
    Public pszTitle As IntPtr
    Public pszRoot As IntPtr
    Public pszPath As IntPtr
    Public cchPath As UInteger
    Public dwFlags As UInteger
    Public pfnCallback As IntPtr
    Public lParam As IntPtr
    Public dwReturnFormat As UInteger
    Public pUserName As IntPtr
    Public pPassword As IntPtr
    Public pszObjectClass As IntPtr
    Public cchObjectClass As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DSBROWSEINFOW(ctypes.Structure):
    _fields_ = [
        ("cbStruct", wintypes.DWORD),
        ("hwndOwner", ctypes.c_void_p),
        ("pszCaption", ctypes.c_void_p),
        ("pszTitle", ctypes.c_void_p),
        ("pszRoot", ctypes.c_void_p),
        ("pszPath", ctypes.c_void_p),
        ("cchPath", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("pfnCallback", ctypes.c_void_p),
        ("lParam", ctypes.c_ssize_t),
        ("dwReturnFormat", wintypes.DWORD),
        ("pUserName", ctypes.c_void_p),
        ("pPassword", ctypes.c_void_p),
        ("pszObjectClass", ctypes.c_void_p),
        ("cchObjectClass", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DSBROWSEINFOW {
    pub cbStruct: u32,
    pub hwndOwner: *mut core::ffi::c_void,
    pub pszCaption: *mut core::ffi::c_void,
    pub pszTitle: *mut core::ffi::c_void,
    pub pszRoot: *mut core::ffi::c_void,
    pub pszPath: *mut core::ffi::c_void,
    pub cchPath: u32,
    pub dwFlags: u32,
    pub pfnCallback: *mut core::ffi::c_void,
    pub lParam: isize,
    pub dwReturnFormat: u32,
    pub pUserName: *mut core::ffi::c_void,
    pub pPassword: *mut core::ffi::c_void,
    pub pszObjectClass: *mut core::ffi::c_void,
    pub cchObjectClass: u32,
}
import "golang.org/x/sys/windows"

type DSBROWSEINFOW struct {
	cbStruct uint32
	hwndOwner uintptr
	pszCaption uintptr
	pszTitle uintptr
	pszRoot uintptr
	pszPath uintptr
	cchPath uint32
	dwFlags uint32
	pfnCallback uintptr
	lParam uintptr
	dwReturnFormat uint32
	pUserName uintptr
	pPassword uintptr
	pszObjectClass uintptr
	cchObjectClass uint32
}
type
  DSBROWSEINFOW = record
    cbStruct: DWORD;
    hwndOwner: Pointer;
    pszCaption: Pointer;
    pszTitle: Pointer;
    pszRoot: Pointer;
    pszPath: Pointer;
    cchPath: DWORD;
    dwFlags: DWORD;
    pfnCallback: Pointer;
    lParam: NativeInt;
    dwReturnFormat: DWORD;
    pUserName: Pointer;
    pPassword: Pointer;
    pszObjectClass: Pointer;
    cchObjectClass: DWORD;
  end;
const DSBROWSEINFOW = extern struct {
    cbStruct: u32,
    hwndOwner: ?*anyopaque,
    pszCaption: ?*anyopaque,
    pszTitle: ?*anyopaque,
    pszRoot: ?*anyopaque,
    pszPath: ?*anyopaque,
    cchPath: u32,
    dwFlags: u32,
    pfnCallback: ?*anyopaque,
    lParam: isize,
    dwReturnFormat: u32,
    pUserName: ?*anyopaque,
    pPassword: ?*anyopaque,
    pszObjectClass: ?*anyopaque,
    cchObjectClass: u32,
};
type
  DSBROWSEINFOW {.bycopy.} = object
    cbStruct: uint32
    hwndOwner: pointer
    pszCaption: pointer
    pszTitle: pointer
    pszRoot: pointer
    pszPath: pointer
    cchPath: uint32
    dwFlags: uint32
    pfnCallback: pointer
    lParam: int
    dwReturnFormat: uint32
    pUserName: pointer
    pPassword: pointer
    pszObjectClass: pointer
    cchObjectClass: uint32
struct DSBROWSEINFOW
{
    uint cbStruct;
    void* hwndOwner;
    void* pszCaption;
    void* pszTitle;
    void* pszRoot;
    void* pszPath;
    uint cchPath;
    uint dwFlags;
    void* pfnCallback;
    ptrdiff_t lParam;
    uint dwReturnFormat;
    void* pUserName;
    void* pPassword;
    void* pszObjectClass;
    uint cchObjectClass;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DSBROWSEINFOW サイズ: 60 バイト(x86)
dim st, 15    ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndOwner : HWND (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; pszCaption : LPWSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; pszTitle : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; pszRoot : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszPath : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; cchPath : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwFlags : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; pfnCallback : BFFCALLBACK (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lParam : LPARAM (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwReturnFormat : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; pUserName : LPWSTR (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; pPassword : LPWSTR (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; pszObjectClass : LPWSTR (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; cchObjectClass : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DSBROWSEINFOW サイズ: 112 バイト(x64)
dim st, 28    ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndOwner : HWND (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pszCaption : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszTitle : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pszRoot : LPWSTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pszPath : LPWSTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; cchPath : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwFlags : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; pfnCallback : BFFCALLBACK (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; lParam : LPARAM (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; dwReturnFormat : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; pUserName : LPWSTR (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; pPassword : LPWSTR (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; pszObjectClass : LPWSTR (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; cchObjectClass : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DSBROWSEINFOW
    #field int cbStruct
    #field intptr hwndOwner
    #field intptr pszCaption
    #field intptr pszTitle
    #field intptr pszRoot
    #field intptr pszPath
    #field int cchPath
    #field int dwFlags
    #field intptr pfnCallback
    #field intptr lParam
    #field int dwReturnFormat
    #field intptr pUserName
    #field intptr pPassword
    #field intptr pszObjectClass
    #field int cchObjectClass
#endstruct

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