IDsDisplaySpecifier
COM公式ドキュメント
displaySpecifier クラスの Active Directory Domain Service オブジェクトへのアクセスを提供します。
メソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
表示指定子データを取得するサーバーを指定します。
| pszServer | LPWSTR | in | 表示指定子データの取得に使用するサーバーの名前を格納した、null で終わる Unicode 文字列へのポインター。 |
| pszUserName | LPWSTR | in | pszServer で指定されたサーバーへのアクセスに使用するユーザー名を格納した、null で終わる Unicode 文字列へのポインター。 |
| pszPassword | LPWSTR | in | pszServer で指定されたサーバーへのアクセスに使用するパスワードを格納した、null で終わる Unicode 文字列へのポインター。 |
| dwFlags | DWORD | in | ディレクトリ サービスへのバインドに使用するフラグのセットを格納します。これはゼロ、または次の値のうち 1 つ以上を組み合わせたものを指定できます。 DSSSF_SIMPLEAUTHENTICATE (1 (0x1))IDsDisplaySpecifier オブジェクトが、セキュリティで保護された認証ではなく単純認証を使用します。 DSSSF_DONTSIGNSEAL (2 (0x2))IDsDisplaySpecifier オブジェクトが、オブジェクトを開く際に署名とシールを使用しません。 DSSSF_DSAVAILABLE (2147483648 (0x80000000))IDsDisplaySpecifier オブジェクトが、ディレクトリ サーバーが利用可能かどうかを確認しません。 |
戻り値
次を含む標準的な HRESULT 値を返します。
解説(Remarks)
サーバー データは IDsDisplaySpecifier オブジェクトによってキャッシュされます。IDsDisplaySpecifier オブジェクトは、IDsDisplaySpecifier::GetDisplaySpecifier などの特定のメソッドが呼び出されるまで、実際にはサーバーへのバインドを行いません。
IDsDisplaySpecifier オブジェクトが使用するロケールを、指定した言語に変更します。
| langid | WORD | in | IDsDisplaySpecifier オブジェクトが使用する言語識別子を格納します。このパラメーターがゼロの場合、このメソッドは GetUserDefaultUILanguage 関数を呼び出して現在のユーザー言語識別子を取得し、そのロケールを使用します。 |
戻り値
このメソッドは常に S_OK を返します。
解説(Remarks)
オブジェクトの作成時に、IDsDisplaySpecifier オブジェクトは GetUserDefaultUILanguage を呼び出してロケールを取得します。このメソッドを使用すると、オブジェクトの利用者が表示指定子で使用するロケールを変更できます。
IDsDisplaySpecifier::GetDisplaySpecifier メソッドは、Active Directory Domain Services 内の指定したクラスの表示指定子オブジェクトにバインドします。
| pszObjectClass | LPWSTR | in | 表示指定子を取得する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。 |
| riid | GUID* | in | 目的のインターフェイスのインターフェイス識別子を格納します。 |
| ppv | void** | inout | オブジェクト クラスの表示指定子を受け取るインターフェイス ポインターへのポインター。 |
戻り値
次を含む標準的な HRESULT 値を返します。
解説(Remarks)
このメソッドは ADsOpenObject 関数を使用して、指定したクラスの表示指定子オブジェクトにバインドします。それが失敗した場合は、ユーザー ロケールの表示指定子へのバインドを試みます。これも失敗した場合は、既定のロケールの表示指定子にバインドします。
このメソッドは、直前の IDsDisplaySpecifier::SetServer の呼び出しで設定されたサーバーとユーザー資格情報を使用します。
例
次のコード例は、このメソッドの呼び出し方法を示しています。
HRESULT hr;
IDsDisplaySpecifier *pDS;
hr = CoCreateInstance(CLSID_DsDisplaySpecifier,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDsDisplaySpecifier,
(void**)&pDS);
if(SUCCEEDED(hr))
{
IADs *pads;
hr = pDS->GetDisplaySpecifier(L"user", IID_IADs, (LPVOID*)&pads);
if(SUCCEEDED(hr))
{
pads->Release();
}
pDS->Release();
}
指定したオブジェクト クラスのアイコンの場所を取得します。
| pszObjectClass | LPWSTR | in | アイコンの場所を取得する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| dwFlags | DWORD | in | 取得するアイコンの種類を示すフラグのセットを格納します。これは次の値のうち 1 つ以上を組み合わせたものを指定できます。 DSGIF_ISNORMALオブジェクト クラスの通常のアイコンを取得します。 DSGIF_ISOPENオブジェクト クラスの、開いた状態のアイコン(開いたフォルダーなど)を取得します。オブジェクト クラスに開いた状態のアイコンがない場合、このメソッドはそのオブジェクト クラスの通常のアイコンの取得を試みます。 DSGIF_ISDISABLEDオブジェクト クラスの、無効状態のアイコン(無効化されたユーザーなど)を取得します。オブジェクト クラスに無効状態のアイコンがない場合、このメソッドはそのオブジェクト クラスの通常のアイコンの取得を試みます。 DSGIF_GETDEFAULTICONオブジェクト クラスのアイコンが見つからない場合、このメソッドは既定のアイコンを返します。このフラグが指定されておらず、オブジェクト クラスのアイコンが見つからない場合、このメソッドは NULL を返します。 DSGIF_DEFAULTISCONTAINERオブジェクト クラスのアイコンが見つからない場合、このメソッドは既定のアイコンとしてコンテナーのアイコンを返します。このフラグが指定されておらず、オブジェクト クラスのアイコンが見つからない場合、このメソッドは NULL を返します。 |
| pszBuffer | LPWSTR | out | アイコンを格納するファイルのパスとファイル名を受け取るワイド文字バッファーへのポインター。このバッファーは少なくとも cchBuffer ワイド文字分の長さが必要です。 |
| cchBuffer | INT | in | 終端の NULL 文字を含む、pszBuffer バッファーのサイズをワイド文字数で格納します。ファイル名がこの文字数を超える場合、ファイル名は切り詰められます。 |
| presid | INT* | out | アイコンのリソース識別子またはインデックスを受け取る INT 値へのポインター。この値が正の場合、その値はファイル内のアイコンのインデックスです。この値が負の場合、その絶対値がファイル内のアイコンのリソース識別子です。 |
戻り値
次を含む標準的な HRESULT 値を返します。
IDsDisplaySpecifier::GetIcon メソッドは、指定したオブジェクト クラスのアイコンを取得します。
| pszObjectClass | LPWSTR | in | アイコンを取得する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| dwFlags | DWORD | in | 取得するアイコンの種類を示すフラグのセットを格納します。これは次の値のうち 1 つ以上を組み合わせたものを指定できます。 DSGIF_ISNORMALオブジェクト クラスの通常のアイコンを取得します。 DSGIF_ISOPENオブジェクト クラスの、開いた状態のアイコン(開いたフォルダーなど)を取得します。オブジェクト クラスに開いた状態のアイコンがない場合、このメソッドはそのオブジェクト クラスの通常のアイコンの取得を試みます。 DSGIF_ISDISABLEDオブジェクト クラスの、無効状態のアイコン(無効化されたユーザーなど)を取得します。オブジェクト クラスに無効状態のアイコンがない場合、このメソッドはそのオブジェクト クラスの通常のアイコンの取得を試みます。 DSGIF_ISMASKDSGIF_ISNORMAL、DSGIF_ISOPEN、DSGIF_ISDISABLED の各フラグをマスクするために使用します。 DSGIF_GETDEFAULTICONオブジェクト クラスのアイコンが見つからない場合、このメソッドは既定のアイコンを返します。このフラグが指定されておらず、オブジェクト クラスのアイコンが見つからない場合、このメソッドは NULL を返します。 DSGIF_DEFAULTISCONTAINERオブジェクト クラスのアイコンが見つからない場合、このメソッドは既定のアイコンとしてコンテナーのアイコンを返します。このフラグが指定されておらず、オブジェクト クラスのアイコンが見つからない場合、このメソッドは NULL を返します。 |
| cxIcon | INT | in | アイコンの希望する幅をピクセル単位で格納します。このメソッドは、この幅に最も近いアイコンを取得します。 |
| cyIcon | INT | in | アイコンの希望する高さをピクセル単位で格納します。このメソッドは、この高さに最も近いアイコンを取得します。 |
戻り値
成功した場合はアイコンのハンドルを返し、それ以外の場合は NULL を返します。呼び出し元は、アイコンが不要になったときに、このハンドルを DestroyIcon に渡してアイコンを破棄する必要があります。
IDsDisplaySpecifier::GetFriendlyClassName メソッドは、オブジェクト クラスのローカライズされた名前を取得します。
| pszObjectClass | LPWSTR | in | 名前を取得する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| pszBuffer | LPWSTR | out | 名前文字列を受け取るワイド文字バッファーへのポインター。このバッファーは少なくとも cchBuffer ワイド文字分の長さが必要です。 |
| cchBuffer | INT | in | 終端の NULL 文字を含む、pszBuffer バッファーのサイズをワイド文字数で格納します。名前がこの文字数を超える場合、名前は切り詰められます。 |
戻り値
次を含む標準的な HRESULT 値を返します。
解説(Remarks)
オブジェクト クラスの表示指定子にフレンドリ名が設定されていない場合、このメソッドは pszObjectClass で渡された名前を返します。
IDsDisplaySpecifier::GetFriendlyAttributeName メソッドは、指定したオブジェクト クラスの属性のローカライズされた名前を取得します。
| pszObjectClass | LPWSTR | in | ローカライズされた属性名を取得する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| pszAttributeName | LPWSTR | in | ローカライズされた名前を取得する対象の属性の名前を格納した、null で終わる Unicode 文字列へのポインター。 |
| pszBuffer | LPWSTR | out | 名前文字列を受け取るワイド文字バッファーへのポインター。このバッファーは少なくとも cchBuffer ワイド文字分の長さが必要です。 |
| cchBuffer | DWORD | in | 終端の NULL 文字を含む、pszBuffer バッファーのサイズをワイド文字数で格納します。名前がこの文字数を超える場合、名前は切り詰められます。 |
戻り値
次を含む標準的な HRESULT 値を返します。
解説(Remarks)
このメソッドは、クラスの表示指定子を参照して attributeNames プロパティを調べ、指定された属性名に一致する属性名のペアを探します。一致が見つからない場合は、入力された属性名がそのまま返されます。
指定したオブジェクト クラスがコンテナーかどうかを判定します。
| pszObjectClass | LPWSTR | in | コンテナーかどうかを判定する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| pszADsPath | LPWSTR | in | 表示指定子コンテナー内でバインド可能で、そのスキーマ データを取得できるクラス オブジェクトの ADsPath を格納した、null で終わる Unicode 文字列へのポインター。 |
| dwFlags | DWORD | in | このメソッドの動作を変更するフラグを格納します。これはゼロ、または次のフラグを指定できます。 DSICCF_IGNORETREATASLEAF表示指定子内の treatAsLeaf 属性が無視され、クラスがコンテナーかどうかの判定にはスキーマ データのみが使用されます。 |
戻り値
指定したクラスがコンテナーの場合は TRUE を返します。それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、スキーマ データおよび/または表示指定子の treatAsLeaf 属性を使用して、オブジェクト クラスがコンテナーかどうかを判定します。スキーマがそのクラスは他のオブジェクトを格納できることを示している場合、そのオブジェクト クラスはコンテナーであると判定されます。表示指定子の treatAsLeaf 属性を使用すると、スキーマの指標を上書きできます。
指定したオブジェクト クラスのクラス作成ウィザード オブジェクトに関するデータを取得します。
| pszObjectClass | LPWSTR | in | ADsType を取得する対象の属性の名前を格納した、null で終わる Unicode 文字列へのポインター。 |
| ppdscci | DSCLASSCREATIONINFO** | inout | クラス作成データを受け取る DSCLASSCREATIONINFO 構造体ポインターへのポインター。このメモリはこのメソッドによって割り当てられます。呼び出し元は、不要になったときに LocalFree を使用してこのメモリを解放する必要があります。 |
戻り値
次を含む標準的な HRESULT 値を返します。
指定したオブジェクト クラスの属性を列挙します。
| pszObjectClass | LPWSTR | in | 属性を列挙する対象のオブジェクト クラスの名前を格納した、null で終わる Unicode 文字列へのポインター。オブジェクト クラス名の例としては "user" や "container" があります。 |
| pcbEnum | LPDSENUMATTRIBUTES | in | 列挙される属性ごとに 1 回呼び出される、アプリケーション提供の DSEnumAttributesCallback 関数へのポインター。 |
| lParam | LPARAM | in | DSEnumAttributesCallback 関数の lParam パラメーターとして渡される、アプリケーション定義のパラメーターを格納します。 |
戻り値
次を含む標準的な HRESULT 値を返します。
指定した属性の属性型を取得します。
| pszAttributeName | LPWSTR | in | 型を取得する対象の属性の名前を格納した、null で終わる Unicode 文字列へのポインター。 |
戻り値
属性の型を示す ADSTYPEENUM 値のいずれかを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDsDisplaySpecifier "{1AB4A8C0-6A0B-11D2-AD49-00C04FA31A86}" #usecom global IDsDisplaySpecifier IID_IDsDisplaySpecifier "{}" #comfunc global IDsDisplaySpecifier_SetServer 3 wstr,wstr,wstr,int #comfunc global IDsDisplaySpecifier_SetLanguageID 4 int #comfunc global IDsDisplaySpecifier_GetDisplaySpecifier 5 wstr,var,sptr #comfunc global IDsDisplaySpecifier_GetIconLocation 6 wstr,int,var,int,var #comfunc global IDsDisplaySpecifier_GetIcon 7 wstr,int,int,int #comfunc global IDsDisplaySpecifier_GetFriendlyClassName 8 wstr,var,int #comfunc global IDsDisplaySpecifier_GetFriendlyAttributeName 9 wstr,wstr,var,int #comfunc global IDsDisplaySpecifier_IsClassContainer 10 wstr,wstr,int #comfunc global IDsDisplaySpecifier_GetClassCreationInfo 11 wstr,var #comfunc global IDsDisplaySpecifier_EnumClassAttributes 12 wstr,sptr,sptr #comfunc global IDsDisplaySpecifier_GetAttributeADsType 13 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDsDisplaySpecifier "{1AB4A8C0-6A0B-11D2-AD49-00C04FA31A86}" #usecom global IDsDisplaySpecifier IID_IDsDisplaySpecifier "{}" #comfunc global IDsDisplaySpecifier_SetServer 3 wstr,wstr,wstr,int #comfunc global IDsDisplaySpecifier_SetLanguageID 4 int #comfunc global IDsDisplaySpecifier_GetDisplaySpecifier 5 wstr,sptr,sptr #comfunc global IDsDisplaySpecifier_GetIconLocation 6 wstr,int,sptr,int,sptr #comfunc global IDsDisplaySpecifier_GetIcon 7 wstr,int,int,int #comfunc global IDsDisplaySpecifier_GetFriendlyClassName 8 wstr,sptr,int #comfunc global IDsDisplaySpecifier_GetFriendlyAttributeName 9 wstr,wstr,sptr,int #comfunc global IDsDisplaySpecifier_IsClassContainer 10 wstr,wstr,int #comfunc global IDsDisplaySpecifier_GetClassCreationInfo 11 wstr,sptr #comfunc global IDsDisplaySpecifier_EnumClassAttributes 12 wstr,sptr,sptr #comfunc global IDsDisplaySpecifier_GetAttributeADsType 13 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。