ITDirectory
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITDirectory インターフェイスは、特定のディレクトリに対応する Directory オブジェクトによって公開されます。
メソッド 14
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
get_DirectoryType メソッドは、ディレクトリの種類を示す DIRECTORY_TYPE インジケーターを取得します。
| pDirectoryType | DIRECTORY_TYPE* | out | ディレクトリの種類へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDirectoryType パラメーターが有効なポインターではありません。 |
get_DisplayName メソッドは、ディレクトリの表示名を取得します。
| pName | LPWSTR* | out | ディレクトリ名を表す BSTR へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pName パラメーターが有効なポインターではありません。 | |
| 操作を実行するためのメモリが不足しています。 | |
| 原因不明のエラーです。 | |
| このメソッドはまだ実装されていません。 |
解説(Remarks)
アプリケーションは、pName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。
get_IsDynamic メソッドは、サーバー上のオブジェクトを更新する必要があるかどうかを示すインジケーターを取得します。
| pfDynamic | VARIANT_BOOL* | out | ブール型の VARIANT へのポインター。サーバーの更新が必要な場合は VARIANT_TRUE、不要な場合は VARIANT_FALSE です。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pfDynamic パラメーターが有効なポインターではありません。 | |
| 操作を実行するためのメモリが不足しています。 | |
| 原因不明のエラーです。 | |
| このメソッドはまだ実装されていません。 |
get_DefaultObjectTTL メソッドは、作成されるオブジェクトの既定の存続時間 (TTL) 値を秒単位で取得します。動的サーバーにのみ適用されます。
| pTTL | INT* | out | TTL 値 (秒単位) へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pTTL パラメーターが有効なポインターではありません。 | |
| 操作を実行するためのメモリが不足しています。 | |
| 原因不明のエラーです。 | |
| このメソッドはまだ実装されていません。 |
put_DefaultObjectTTL メソッドは、作成されるオブジェクトの既定の存続時間 (TTL) 値を秒単位で設定します。動的サーバーにのみ適用されます。最小値は 300 秒です。
| TTL | INT | in | TTL 値 (秒単位)。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| TTL パラメーターが無効です。 | |
| 操作を実行するためのメモリが不足しています。 | |
| 原因不明のエラーです。 | |
| このメソッドはまだ実装されていません。 |
EnableAutoRefresh メソッドは、呼び出された後に作成されるディレクトリオブジェクトの自動更新を有効にします。動的サーバーにのみ適用されます。
| fEnable | VARIANT_BOOL | in | 自動更新を有効にする場合は VARIANT_TRUE に設定します。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| fEnable パラメーターが無効です。 | |
| 操作を実行するためのメモリが不足しています。 | |
| 原因不明のエラーです。 | |
| このメソッドはまだ実装されていません。 |
Connect メソッドは、ディレクトリサーバーへの接続を確立します。
| fSecure | VARIANT_BOOL | in | SSL 接続を使用するかどうかを示すブール値。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
接続は既に正常に確立されています。 |
|
サーバー名が NULL です。おそらく ITConferenceBlob::Init が実行されていないか、成功しなかったためです。 |
解説(Remarks)
Connect メソッドは、 get_DirectoryType を除く他のすべての関数の前に、正常に呼び出す必要があります。
Bind メソッドは、サーバーにバインドします。
| pDomainName | LPWSTR | in | ユーザーのドメイン名を格納する BSTR へのポインター。 |
| pUserName | LPWSTR | in | ユーザー名を格納する BSTR へのポインター。 |
| pPassword | LPWSTR | in | ユーザーのパスワードを格納する BSTR へのポインター。 |
| lFlags | INT | in | すべてのパラメーターを検証する必要があるか、既定値を使用できるかを示す RENDBIND フラグ。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDomainName、pUserName、または pPassword パラメーターが有効なポインターではありません。 | |
| パスワードが必要であるのに指定されていない、ドメインとユーザーが指定されていない、またはドメインは指定されたがユーザーが指定されていません。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
解説(Remarks)
入力変数 pDomainName、pUserName、pPassword は NULL にできます。
この関数の呼び出しは任意です。ただし、一部のディレクトリ操作では、最初にユーザーを認証する必要があります。 Bind はいつ呼び出しても安全です。
アプリケーションは、pDomainName、pUserName、pPassword パラメーターにメモリを割り当てるために SysAllocString を使用する必要があります。変数が不要になったら、アプリケーションは SysFreeString を使用してメモリを解放する必要があります。
AddDirectoryObject メソッドは、ITDirectoryObject オブジェクトをサーバーに追加します。これはディレクトリ、またはユーザーマシンのマッピングの場合があります。
| pDirectoryObject | ITDirectoryObject* | in | ディレクトリに追加されるオブジェクト。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDirectoryObject パラメーターが有効なポインターではありません。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
| このメソッドは実装されていません。 |
ModifyDirectoryObject メソッドは、ディレクトリの変更をサーバーにコミットします。
| pDirectoryObject | ITDirectoryObject* | in | 変更された ITDirectoryObject へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDirectoryObject パラメーターが有効なポインターではありません。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
| このメソッドは実装されていません。 |
解説(Remarks)
ITDirectoryObject に加えた変更は、このメソッドが呼び出されるまでサーバーに反映されません。
一部の属性は変更できず、変更しようとすると失敗します。例については、 ITDirectoryObjectUser::put_IPPhonePrimary の「解説」セクションを参照してください。
RefreshDirectoryObject メソッドは、サーバー上のオブジェクトの存続時間 (TTL) を更新します。動的サーバーにのみ適用されます。
| pDirectoryObject | ITDirectoryObject* | in | 更新する ITDirectoryObject へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pDirectoryObject パラメーターが有効なポインターではありません。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
DeleteDirectoryObject メソッドは、サーバーからオブジェクトを削除します。
| pDirectoryObject | ITDirectoryObject* | in | ディレクトリから削除される ITDirectoryObject へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDirectoryObject パラメーターが有効なポインターではありません。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
| このメソッドは実装されていません。 |
解説(Remarks)
この関数は、暗号化されていない形式でデータをネットワーク上に送信する場合があります。そのため、ネットワークを盗聴している者がデータを読み取れる可能性があります。このメソッドを使用する前に、データを平文で送信することによるセキュリティ上のリスクを考慮する必要があります。
get_DirectoryObjects メソッドは、特定の条件に一致する、指定されたディレクトリ内のオブジェクトのコレクションを取得します。このメソッドは EnumerateDirectoryObjects と同じ機能を実行しますが、Visual Basic やその他のスクリプト言語で使用されます。
| DirectoryObjectType | DIRECTORY_OBJECT_TYPE | in | 目的のオブジェクトの DIRECTORY_OBJECT_TYPE 条件。 |
| pName | LPWSTR | in | オブジェクトの完全な名前または部分的な名前を格納する BSTR へのポインター。「*」ワイルドカードがサポートされています。 |
| pVariant | VARIANT* | out | 説明に一致するサーバー内の ITDirectoryObject オブジェクトの ITCollection を受け取る VARIANT へのポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
| このメソッドは実装されていません。 |
解説(Remarks)
アプリケーションは、pName パラメーターにメモリを割り当てるために SysAllocString を使用し、変数が不要になったらメモリを解放するために SysFreeString を使用する必要があります。
TAPI は、ITDirectory::get_DirectoryObjects が返す ITDirectoryObject インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 ITDirectoryObject インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。
EnumerateDirectoryObjects メソッドは、指定された種類と名前のディレクトリオブジェクトの列挙を作成します。
| DirectoryObjectType | DIRECTORY_OBJECT_TYPE | in | 目的のオブジェクトの DIRECTORY_OBJECT_TYPE 条件。 |
| pName | LPWSTR | in | オブジェクトの完全な名前または部分的な名前を格納する BSTR へのポインター。「*」ワイルドカードがサポートされています。 |
| ppEnumObject | IEnumDirectoryObject** | out | 一致するオブジェクトの列挙子の IEnumDirectoryObject インターフェイスポインターを受け取るポインター。 |
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
|
ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。 |
| このメソッドは実装されていません。 |
解説(Remarks)
アプリケーションは、pName パラメーターにメモリを割り当てるために SysAllocString を使用し、変数が不要になったらメモリを解放するために SysFreeString を使用する必要があります。
TAPI は、ITDirectory::EnumerateDirectoryObjects が返す IEnumDirectoryObject インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 IEnumDirectoryObject インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITDirectory "{34621D6C-6CFF-11D1-AFF7-00C04FC31FEE}" #usecom global ITDirectory IID_ITDirectory "{}" #comfunc global ITDirectory_get_DirectoryType 7 var #comfunc global ITDirectory_get_DisplayName 8 var #comfunc global ITDirectory_get_IsDynamic 9 var #comfunc global ITDirectory_get_DefaultObjectTTL 10 var #comfunc global ITDirectory_put_DefaultObjectTTL 11 int #comfunc global ITDirectory_EnableAutoRefresh 12 int #comfunc global ITDirectory_Connect 13 int #comfunc global ITDirectory_Bind 14 wstr,wstr,wstr,int #comfunc global ITDirectory_AddDirectoryObject 15 sptr #comfunc global ITDirectory_ModifyDirectoryObject 16 sptr #comfunc global ITDirectory_RefreshDirectoryObject 17 sptr #comfunc global ITDirectory_DeleteDirectoryObject 18 sptr #comfunc global ITDirectory_get_DirectoryObjects 19 int,wstr,var #comfunc global ITDirectory_EnumerateDirectoryObjects 20 int,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITDirectory "{34621D6C-6CFF-11D1-AFF7-00C04FC31FEE}" #usecom global ITDirectory IID_ITDirectory "{}" #comfunc global ITDirectory_get_DirectoryType 7 sptr #comfunc global ITDirectory_get_DisplayName 8 sptr #comfunc global ITDirectory_get_IsDynamic 9 sptr #comfunc global ITDirectory_get_DefaultObjectTTL 10 sptr #comfunc global ITDirectory_put_DefaultObjectTTL 11 int #comfunc global ITDirectory_EnableAutoRefresh 12 int #comfunc global ITDirectory_Connect 13 int #comfunc global ITDirectory_Bind 14 wstr,wstr,wstr,int #comfunc global ITDirectory_AddDirectoryObject 15 sptr #comfunc global ITDirectory_ModifyDirectoryObject 16 sptr #comfunc global ITDirectory_RefreshDirectoryObject 17 sptr #comfunc global ITDirectory_DeleteDirectoryObject 18 sptr #comfunc global ITDirectory_get_DirectoryObjects 19 int,wstr,sptr #comfunc global ITDirectory_EnumerateDirectoryObjects 20 int,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。