DSBROWSEINFOA
構造体サイズ=各フィールドのバイト数(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 | LPSTR | 8/4 | +16 | +8 | ダイアログ ボックスのキャプションを格納する null 終端文字列へのポインターです。このメンバーが NULL の場合、既定のキャプションが使用されます。 |
| pszTitle | LPSTR | 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 文字単位で格納します。 |
公式ドキュメント
DSBROWSEINFO 構造体は、 DsBrowseForContainer 関数と共に使用され、Active Directory コンテナー ブラウザー ダイアログ ボックスに関するデータを提供および受け取ります。
解説(Remarks)
dsclient.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして DSBROWSEINFO を定義しています。エンコードに依存しないエイリアスと、エンコードに依存するコードを混在させて使用すると、不一致が生じ、コンパイル エラーや実行時エラーの原因となる場合があります。詳細については、Conventions for Function Prototypes を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// DSBROWSEINFOA (x64 112 / x86 60 バイト)
typedef struct DSBROWSEINFOA {
DWORD cbStruct;
HWND hwndOwner;
LPSTR pszCaption;
LPSTR pszTitle;
LPWSTR pszRoot;
LPWSTR pszPath;
DWORD cchPath;
DWORD dwFlags;
BFFCALLBACK pfnCallback;
LPARAM lParam;
DWORD dwReturnFormat;
LPWSTR pUserName;
LPWSTR pPassword;
LPWSTR pszObjectClass;
DWORD cchObjectClass;
} DSBROWSEINFOA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DSBROWSEINFOA
{
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 DSBROWSEINFOA
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 DSBROWSEINFOA(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 DSBROWSEINFOA {
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 DSBROWSEINFOA 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
DSBROWSEINFOA = 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 DSBROWSEINFOA = 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
DSBROWSEINFOA {.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 DSBROWSEINFOA
{
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 レイアウト)
; DSBROWSEINFOA サイズ: 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 : LPSTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pszTitle : LPSTR (+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 レイアウト)
; DSBROWSEINFOA サイズ: 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 : LPSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszTitle : LPSTR (+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 DSBROWSEINFOA
#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, DSBROWSEINFOA ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct