Win32 API 日本語リファレンス
ホームDevices.Tapi › ITDirectory

ITDirectory

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID34621d6c-6cff-11d1-aff7-00c04fc31fee継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

ITDirectory インターフェイスは、特定のディレクトリに対応する Directory オブジェクトによって公開されます。

メソッド 14

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_DirectoryType(DIRECTORY_TYPE* pDirectoryType)

get_DirectoryType メソッドは、ディレクトリの種類を示す DIRECTORY_TYPE インジケーターを取得します。

pDirectoryTypeDIRECTORY_TYPE*outディレクトリの種類へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDirectoryType パラメーターが有効なポインターではありません。
vtbl 8 HRESULT get_DisplayName(LPWSTR* pName)

get_DisplayName メソッドは、ディレクトリの表示名を取得します。

pNameLPWSTR*outディレクトリ名を表す BSTR へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pName パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するためのメモリが不足しています。
E_FAIL
原因不明のエラーです。
E_NOTIMPL
このメソッドはまだ実装されていません。

解説(Remarks)

アプリケーションは、pName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。

vtbl 9 HRESULT get_IsDynamic(VARIANT_BOOL* pfDynamic)

get_IsDynamic メソッドは、サーバー上のオブジェクトを更新する必要があるかどうかを示すインジケーターを取得します。

pfDynamicVARIANT_BOOL*outブール型の VARIANT へのポインター。サーバーの更新が必要な場合は VARIANT_TRUE、不要な場合は VARIANT_FALSE です。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pfDynamic パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するためのメモリが不足しています。
E_FAIL
原因不明のエラーです。
E_NOTIMPL
このメソッドはまだ実装されていません。
vtbl 10 HRESULT get_DefaultObjectTTL(INT* pTTL)

get_DefaultObjectTTL メソッドは、作成されるオブジェクトの既定の存続時間 (TTL) 値を秒単位で取得します。動的サーバーにのみ適用されます。

pTTLINT*outTTL 値 (秒単位) へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

意味
S_OK
メソッドは成功しました。
E_POINTER
pTTL パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するためのメモリが不足しています。
E_FAIL
原因不明のエラーです。
E_NOTIMPL
このメソッドはまだ実装されていません。
vtbl 11 HRESULT put_DefaultObjectTTL(INT TTL)

put_DefaultObjectTTL メソッドは、作成されるオブジェクトの既定の存続時間 (TTL) 値を秒単位で設定します。動的サーバーにのみ適用されます。最小値は 300 秒です。

TTLINTinTTL 値 (秒単位)。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

意味
S_OK
メソッドは成功しました。
E_INVALIDARG
TTL パラメーターが無効です。
E_OUTOFMEMORY
操作を実行するためのメモリが不足しています。
E_FAIL
原因不明のエラーです。
E_NOTIMPL
このメソッドはまだ実装されていません。
vtbl 12 HRESULT EnableAutoRefresh(VARIANT_BOOL fEnable)

EnableAutoRefresh メソッドは、呼び出された後に作成されるディレクトリオブジェクトの自動更新を有効にします。動的サーバーにのみ適用されます。

fEnableVARIANT_BOOLin自動更新を有効にする場合は VARIANT_TRUE に設定します。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
fEnable パラメーターが無効です。
E_OUTOFMEMORY
操作を実行するためのメモリが不足しています。
E_FAIL
原因不明のエラーです。
E_NOTIMPL
このメソッドはまだ実装されていません。
vtbl 13 HRESULT Connect(VARIANT_BOOL fSecure)

Connect メソッドは、ディレクトリサーバーへの接続を確立します。

fSecureVARIANT_BOOLinSSL 接続を使用するかどうかを示すブール値。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
RND_ALREADY_CONNECTED
接続は既に正常に確立されています。
RND_NULL_SERVER_NAME
サーバー名が NULL です。おそらく ITConferenceBlob::Init が実行されていないか、成功しなかったためです。

解説(Remarks)

Connect メソッドは、 get_DirectoryType を除く他のすべての関数の前に、正常に呼び出す必要があります。

vtbl 14 HRESULT Bind(LPWSTR pDomainName, LPWSTR pUserName, LPWSTR pPassword, INT lFlags)

Bind メソッドは、サーバーにバインドします。

pDomainNameLPWSTRinユーザーのドメイン名を格納する BSTR へのポインター。
pUserNameLPWSTRinユーザー名を格納する BSTR へのポインター。
pPasswordLPWSTRinユーザーのパスワードを格納する BSTR へのポインター。
lFlagsINTinすべてのパラメーターを検証する必要があるか、既定値を使用できるかを示す RENDBIND フラグ。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDomainNamepUserName、または pPassword パラメーターが有効なポインターではありません。
E_INVALIDARG
パスワードが必要であるのに指定されていない、ドメインとユーザーが指定されていない、またはドメインは指定されたがユーザーが指定されていません。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

解説(Remarks)

入力変数 pDomainNamepUserNamepPasswordNULL にできます。

この関数の呼び出しは任意です。ただし、一部のディレクトリ操作では、最初にユーザーを認証する必要があります。 Bind はいつ呼び出しても安全です。

アプリケーションは、pDomainNamepUserNamepPassword パラメーターにメモリを割り当てるために SysAllocString を使用する必要があります。変数が不要になったら、アプリケーションは SysFreeString を使用してメモリを解放する必要があります。

vtbl 15 HRESULT AddDirectoryObject(ITDirectoryObject* pDirectoryObject)

AddDirectoryObject メソッドは、ITDirectoryObject オブジェクトをサーバーに追加します。これはディレクトリ、またはユーザーマシンのマッピングの場合があります。

pDirectoryObjectITDirectoryObject*inディレクトリに追加されるオブジェクト。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDirectoryObject パラメーターが有効なポインターではありません。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

E_NOTIMPL
このメソッドは実装されていません。
vtbl 16 HRESULT ModifyDirectoryObject(ITDirectoryObject* pDirectoryObject)

ModifyDirectoryObject メソッドは、ディレクトリの変更をサーバーにコミットします。

pDirectoryObjectITDirectoryObject*in変更された ITDirectoryObject へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDirectoryObject パラメーターが有効なポインターではありません。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

E_NOTIMPL
このメソッドは実装されていません。

解説(Remarks)

ITDirectoryObject に加えた変更は、このメソッドが呼び出されるまでサーバーに反映されません。

一部の属性は変更できず、変更しようとすると失敗します。例については、 ITDirectoryObjectUser::put_IPPhonePrimary の「解説」セクションを参照してください。

vtbl 17 HRESULT RefreshDirectoryObject(ITDirectoryObject* pDirectoryObject)

RefreshDirectoryObject メソッドは、サーバー上のオブジェクトの存続時間 (TTL) を更新します。動的サーバーにのみ適用されます。

pDirectoryObjectITDirectoryObject*in更新する ITDirectoryObject へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

意味
S_OK
メソッドは成功しました。
E_POINTER
pDirectoryObject パラメーターが有効なポインターではありません。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

vtbl 18 HRESULT DeleteDirectoryObject(ITDirectoryObject* pDirectoryObject)

DeleteDirectoryObject メソッドは、サーバーからオブジェクトを削除します。

pDirectoryObjectITDirectoryObject*inディレクトリから削除される ITDirectoryObject へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDirectoryObject パラメーターが有効なポインターではありません。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

E_NOTIMPL
このメソッドは実装されていません。

解説(Remarks)

この関数は、暗号化されていない形式でデータをネットワーク上に送信する場合があります。そのため、ネットワークを盗聴している者がデータを読み取れる可能性があります。このメソッドを使用する前に、データを平文で送信することによるセキュリティ上のリスクを考慮する必要があります。

vtbl 19 HRESULT get_DirectoryObjects(DIRECTORY_OBJECT_TYPE DirectoryObjectType, LPWSTR pName, VARIANT* pVariant)

get_DirectoryObjects メソッドは、特定の条件に一致する、指定されたディレクトリ内のオブジェクトのコレクションを取得します。このメソッドは EnumerateDirectoryObjects と同じ機能を実行しますが、Visual Basic やその他のスクリプト言語で使用されます。

DirectoryObjectTypeDIRECTORY_OBJECT_TYPEin目的のオブジェクトの DIRECTORY_OBJECT_TYPE 条件。
pNameLPWSTRinオブジェクトの完全な名前または部分的な名前を格納する BSTR へのポインター。「*」ワイルドカードがサポートされています。
pVariantVARIANT*out説明に一致するサーバー内の ITDirectoryObject オブジェクトの ITCollection を受け取る VARIANT へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

意味
S_OK
メソッドは成功しました。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

E_NOTIMPL
このメソッドは実装されていません。

解説(Remarks)

アプリケーションは、pName パラメーターにメモリを割り当てるために SysAllocString を使用し、変数が不要になったらメモリを解放するために SysFreeString を使用する必要があります。

TAPI は、ITDirectory::get_DirectoryObjects が返す ITDirectoryObject インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 ITDirectoryObject インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。

vtbl 20 HRESULT EnumerateDirectoryObjects(DIRECTORY_OBJECT_TYPE DirectoryObjectType, LPWSTR pName, IEnumDirectoryObject** ppEnumObject)

EnumerateDirectoryObjects メソッドは、指定された種類と名前のディレクトリオブジェクトの列挙を作成します。

DirectoryObjectTypeDIRECTORY_OBJECT_TYPEin目的のオブジェクトの DIRECTORY_OBJECT_TYPE 条件。
pNameLPWSTRinオブジェクトの完全な名前または部分的な名前を格納する BSTR へのポインター。「*」ワイルドカードがサポートされています。
ppEnumObjectIEnumDirectoryObject**out一致するオブジェクトの列挙子の IEnumDirectoryObject インターフェイスポインターを受け取るポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

意味
S_OK
メソッドは成功しました。
RND_NOT_CONNECTED

ITDirectory::Connect メソッドが呼び出されていないか、成功しませんでした。

E_NOTIMPL
このメソッドは実装されていません。

解説(Remarks)

アプリケーションは、pName パラメーターにメモリを割り当てるために SysAllocString を使用し、変数が不要になったらメモリを解放するために SysFreeString を使用する必要があります。

TAPI は、ITDirectory::EnumerateDirectoryObjects が返す IEnumDirectoryObject インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 IEnumDirectoryObject インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。