DSQUERYINITPARAMS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbStruct | DWORD | 4 | +0 | +0 | この構造体のサイズをバイト単位で格納します。 |
| dwFlags | DWORD | 4 | +4 | +4 | クエリの動作を定義するフラグのセットを格納します。0 または次の値のうち 1 つ以上の組み合わせを指定できます。 DSQPF_ENABLEADMINFEATURESコンテキスト メニューやプロパティ ページ用の Admin Display Specifier など、ディレクトリ サービス管理ツールがサポートする機能を使用します。 DSQPF_ENABLEADVANCEDFEATURESコンテキスト メニューやプロパティ ページに渡される IDataObject インスタンスで高度な機能を指定します。 DSQPF_HASCREDENTIALSこの構造体の pUserName、pPassword、pServer の各メンバーで、サーバーおよび資格情報のデータを指定できます。 DSQPF_NOCHOOSECOLUMNSクエリ ダイアログ ボックスの 表示 メニューにある 列の選択 項目を無効にします。 DSQPF_NOSAVEクエリ ダイアログ ボックスの ファイル メニューから 検索結果の保存 項目を削除します。 DSQPF_SAVELOCATIONpDefaultSaveLocation メンバーに、検索結果を保存する既定のファイル システム パスが格納されます。 DSQPF_SHOWHIDDENOBJECTSクエリ ダイアログ ボックスがクエリ結果一覧に隠しオブジェクトを表示するようにします。 |
| pDefaultScope | LPWSTR | 8/4 | +8 | +8 | 検索の既定のスコープの ADsPath を格納する、null 終端の Unicode 文字列へのポインター。既定の検索スコープを指定しない場合は、このメンバーを NULL に設定します。 |
| pDefaultSaveLocation | LPWSTR | 8/4 | +16 | +12 | 検索結果を保存する既定のファイル システム パスを格納する、null 終端の Unicode 文字列へのポインター。dwFlags メンバーに DSQPF_SAVELOCATION が含まれていない場合、このメンバーは無視されます。 |
| pUserName | LPWSTR | 8/4 | +24 | +16 | 有効なドメイン表記のユーザー名 (たとえば "fabrikam\jeffsmith") を格納する、null 終端の Unicode 文字列へのポインター。 |
| pPassword | LPWSTR | 8/4 | +32 | +20 | pUserName メンバーで指定されたユーザーのパスワードを格納する、null 終端の Unicode 文字列へのポインター。 |
| pServer | LPWSTR | 8/4 | +40 | +24 | 信頼されたドメインの一覧を読み取るサーバーの名前を格納する、null 終端の Unicode 文字列へのポインター。この一覧は、ダイアログ ボックスの In: ドロップダウン リストを設定するために使用されます。 |
公式ドキュメント
DSQUERYINITPARAMS 構造体は、ディレクトリ サービス クエリで参照ダイアログ ボックスを初期化するために使用するデータを記述します。
解説(Remarks)
この構造体は CLSID_DsQuery クエリ ハンドラー固有のものです。この構造体は、OPENQUERYWINDOW 構造体の clsidHandler メンバーに CLSID_DsQuery が設定されている場合に、 OPENQUERYWINDOW 構造体の pHandlerParameters メンバーとして使用されます。この API および関連する他の API の使用方法とコード例の詳細については、 ICommonQuery::OpenQueryWindow を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// DSQUERYINITPARAMS (x64 48 / x86 28 バイト)
typedef struct DSQUERYINITPARAMS {
DWORD cbStruct;
DWORD dwFlags;
LPWSTR pDefaultScope;
LPWSTR pDefaultSaveLocation;
LPWSTR pUserName;
LPWSTR pPassword;
LPWSTR pServer;
} DSQUERYINITPARAMS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DSQUERYINITPARAMS
{
public uint cbStruct;
public uint dwFlags;
public IntPtr pDefaultScope;
public IntPtr pDefaultSaveLocation;
public IntPtr pUserName;
public IntPtr pPassword;
public IntPtr pServer;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DSQUERYINITPARAMS
Public cbStruct As UInteger
Public dwFlags As UInteger
Public pDefaultScope As IntPtr
Public pDefaultSaveLocation As IntPtr
Public pUserName As IntPtr
Public pPassword As IntPtr
Public pServer As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class DSQUERYINITPARAMS(ctypes.Structure):
_fields_ = [
("cbStruct", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("pDefaultScope", ctypes.c_void_p),
("pDefaultSaveLocation", ctypes.c_void_p),
("pUserName", ctypes.c_void_p),
("pPassword", ctypes.c_void_p),
("pServer", ctypes.c_void_p),
]#[repr(C)]
pub struct DSQUERYINITPARAMS {
pub cbStruct: u32,
pub dwFlags: u32,
pub pDefaultScope: *mut core::ffi::c_void,
pub pDefaultSaveLocation: *mut core::ffi::c_void,
pub pUserName: *mut core::ffi::c_void,
pub pPassword: *mut core::ffi::c_void,
pub pServer: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type DSQUERYINITPARAMS struct {
cbStruct uint32
dwFlags uint32
pDefaultScope uintptr
pDefaultSaveLocation uintptr
pUserName uintptr
pPassword uintptr
pServer uintptr
}type
DSQUERYINITPARAMS = record
cbStruct: DWORD;
dwFlags: DWORD;
pDefaultScope: Pointer;
pDefaultSaveLocation: Pointer;
pUserName: Pointer;
pPassword: Pointer;
pServer: Pointer;
end;const DSQUERYINITPARAMS = extern struct {
cbStruct: u32,
dwFlags: u32,
pDefaultScope: ?*anyopaque,
pDefaultSaveLocation: ?*anyopaque,
pUserName: ?*anyopaque,
pPassword: ?*anyopaque,
pServer: ?*anyopaque,
};type
DSQUERYINITPARAMS {.bycopy.} = object
cbStruct: uint32
dwFlags: uint32
pDefaultScope: pointer
pDefaultSaveLocation: pointer
pUserName: pointer
pPassword: pointer
pServer: pointerstruct DSQUERYINITPARAMS
{
uint cbStruct;
uint dwFlags;
void* pDefaultScope;
void* pDefaultSaveLocation;
void* pUserName;
void* pPassword;
void* pServer;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DSQUERYINITPARAMS サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pDefaultScope : LPWSTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pDefaultSaveLocation : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pUserName : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pPassword : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pServer : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DSQUERYINITPARAMS サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pDefaultScope : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pDefaultSaveLocation : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pUserName : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pPassword : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pServer : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DSQUERYINITPARAMS
#field int cbStruct
#field int dwFlags
#field intptr pDefaultScope
#field intptr pDefaultSaveLocation
#field intptr pUserName
#field intptr pPassword
#field intptr pServer
#endstruct
stdim st, DSQUERYINITPARAMS ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct