DSBROWSEINFOW
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbStruct | DWORD | 4 | +0 | +0 | DSBROWSEINFO 構造体のサイズをバイト単位で格納します。これは DsBrowseForContainer 関数がバージョン管理のために使用します。 |
| hwndOwner | HWND | 8/4 | +8 | +4 | コンテナー ブラウザー ダイアログ ボックスの親として使用されるウィンドウのハンドルです。 |
| pszCaption | LPWSTR | 8/4 | +16 | +8 | ダイアログ ボックスのキャプションを格納した NULL 終端文字列へのポインターです。このメンバーが NULL の場合は、既定のキャプションが使用されます。 |
| pszTitle | LPWSTR | 8/4 | +24 | +12 | ダイアログ ボックス内のツリー コントロールの上に表示する追加テキストを格納した NULL 終端文字列へのポインターです。このメンバーが NULL の場合、追加のテキストは表示されません。 |
| pszRoot | LPWSTR | 8/4 | +32 | +16 | ダイアログ ボックスのルートに配置されるコンテナーの ADsPath を格納した NULL 終端 Unicode 文字列へのポインターです。ユーザーはダイアログ ボックスを使用してこのレベルより上位へ移動することはできません。 |
| pszPath | LPWSTR | 8/4 | +40 | +20 | ダイアログで選択されたコンテナーの ADsPath を受け取る NULL 終端 Unicode 文字列へのポインターです。この文字列は、cchPath がパス全体を保持するのに十分な大きさでない場合でも、常に NULL 終端されます。dwFlags に DSBI_EXPANDONOPEN フラグが含まれている場合、このメンバーには、ダイアログ ボックスで最初に選択されるコンテナーの ADsPath を格納します。 |
| cchPath | DWORD | 4 | +48 | +24 | pszPath バッファーのサイズを WCHAR 文字単位で格納します。 |
| dwFlags | DWORD | 4 | +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 で指定されたルート オブジェクトは表示されず、ルートの直下の子オブジェクトがツリーのルートに表示されます。pszRoot が NULL の場合、またはこのメンバーに 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))pUserName と pPassword がアクセス資格情報として使用されます。それ以外の場合、このメンバーに DSBI_SIMPLEAUTHENTICATE が含まれていなければ、ダイアログは呼び出し元スレッドのセキュリティ コンテキストを使用します。 DSBI_IGNORETREATASLEAF (4194304 (0x400000))オブジェクトをダイアログ ボックスに表示するかどうかを判断する際に、treatAsLeaf 表示指定子を無視します。 DSBI_SIMPLEAUTHENTICATE (8388608 (0x800000))ADsOpenObject を呼び出すときに、セキュリティで保護された認証が不要であることを示します。 DSBI_RETURNOBJECTCLASS (16777216 (0x1000000))pszObjectClass と cchObjectClass が有効であり、値を格納する必要があることを示します。 DSBI_DONTSIGNSEAL (33554432 (0x2000000))ディレクトリ サービスとの通信時に署名と封印を使用しないことを示します。 |
| pfnCallback | BFFCALLBACK | 8/4 | +56 | +32 | コンテナー ブラウザー ダイアログ ボックスから通知を受け取る、アプリケーション定義の BFFCallBack コールバック関数へのポインターです。使用しない場合は、このメンバーを NULL に設定します。 |
| lParam | LPARAM | 8/4 | +64 | +36 | pfnCallback へのすべての呼び出しで lpData パラメーターとして渡される、アプリケーション定義の 32 ビット値を格納します。pfnCallback が NULL の場合、このメンバーは無視されます。 |
| dwReturnFormat | DWORD | 4 | +72 | +40 | pszPath で返される ADSI パスの形式を指定する ADS_FORMAT_ENUM 値のいずれかを格納します。 |
| pUserName | LPWSTR | 8/4 | +80 | +44 | 資格情報として使用されるユーザー名を格納した Unicode 文字列へのポインターです。dwFlags に DSBI_HASCREDENTIALS フラグが設定されていない場合、このメンバーは無視されます。このメンバーが NULL の場合は、現在ログオンしているユーザー名が使用されます。 |
| pPassword | LPWSTR | 8/4 | +88 | +48 | 資格情報として使用されるパスワードを格納した Unicode 文字列へのポインターです。dwFlags に DSBI_HASCREDENTIALS フラグが設定されていない場合、このメンバーは無視されます。このメンバーが NULL の場合は、現在ログオンしているユーザーのパスワードが使用されます。 |
| pszObjectClass | LPWSTR | 8/4 | +96 | +52 | 選択されたオブジェクトのクラス文字列を受け取る Unicode 文字列バッファーへのポインターです。dwFlags に DSBI_RETURNOBJECTCLASS フラグが設定されていない場合、このメンバーは無視されます。 |
| cchObjectClass | DWORD | 4 | +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))pUserName と pPassword がアクセス資格情報として使用されます。それ以外の場合、このメンバーに 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 で指定されたルート オブジェクトは表示されず、ルートの直下の子オブジェクトがツリーのルートに表示されます。pszRoot が NULL の場合、またはこのメンバーに DSBI_ENTIREDIRECTORY が含まれている場合、このフラグは効果がありません。 - dwFlags.DSBI_RETURNOBJECTCLASS (16777216 (0x1000000))pszObjectClass と cchObjectClass が有効であり、値を格納する必要があることを示します。 - 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 公式リファレンス: 英語 (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 Structureimport 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: uint32struct 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