IADsNameTranslate
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IADsNameTranslate インターフェイスは、ADS_NAME_TYPE_ENUM 列挙体で定義されるさまざまな形式間で識別名 (DN) を変換します。この機能は Active Directory 内のオブジェクトで利用できます。
メソッド 7
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
| lnChaseReferral | INT | in | 参照(リファーラル)の追跡方法を指定する。ADS_CHASE_REFERRALS_*の値。 |
現在のユーザーの資格情報を使用して、指定したディレクトリ サーバー、ドメイン、またはグローバル カタログにバインドし、name translate オブジェクトを初期化します。
| lnSetType | INT | in | 実行する初期化の種類。指定できる値は ADS_NAME_INITTYPE_ENUM で定義されています。 |
| bstrADsPath | LPWSTR | in | lnInitType の値に応じた、サーバーまたはドメインの名前。ADS_NAME_INITTYPE_GC が指定された場合、このパラメーターは無視されます。現在のコンピューターが属するドメインのグローバル カタログ サーバーが name translate 操作を実行します。この場合、コンピューターがドメインに参加していないとグローバル カタログが見つからないため、このメソッドは失敗します。詳細については、ADS_NAME_INITTYPE_ENUM を参照してください。 |
戻り値
標準の HRESULT または RPC エラー コードを返します。以下を含みます。
解説(Remarks)
初期化に成功した後は、name translate オブジェクトを使用して、ディレクトリ内のオブジェクトの名前変換要求を送信できます。詳細については、IADsNameTranslate::Set または IADsNameTranslate::Get を参照してください。
例
次の C/C++ コード例では、IADsNameTranslate::Init メソッドを使用して、ユーザー オブジェクトの識別名を s 形式で表示する前に IADsNameTranslate オブジェクトを初期化します。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->Init(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"));
if (FAILED(hr)) { exit 1;}
hr =pNto->Set(ADS_NAME_TYPE_1779,
CComBSTR("cn=jeffsmith,cn=users,dc=Fabrikam,dc=com"));
if(FAILED(hr)) {exit 1;}
BSTR bstr;
hr = pNto->Get(ADS_NAME_TYPE_NT4, &bstr);
printf("Name in the translated format: %S\n", bstr);
SysFreeString(bstr);
pNto->Release();
次の Visual Basic コード例では、IADsNameTranslate::Init メソッドを使用して IADsNameTranslate オブジェクトを初期化し、ユーザー オブジェクトの識別名を s ユーザー名形式で表示します。
Dim nto As New NameTranslate
dso="CN=jeffsmith, CN=users, DC=Fabrikam dc=COM"
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.Set ADS_NAME_TYPE_1779, dso
trans = nto.Get(ADS_NAME_TYPE_NT4)
次の VBScript/ASP コード例では、IADsNameTranslate::Init メソッドを使用して IADsNameTranslate オブジェクトを初期化し、ユーザー オブジェクトの識別名を s ユーザー名形式で表示します。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2 ' VBScript cannot read
const ADS_NAME_TYPE_1779 = 1 ' enumeration definition
const ADS_NAME_TYPE_NT4 = 3
dn = "CN=jeffsmith,CN=Users,DC=Fabrikam,DC=COM"
Set nto = Server.CreateObject("NameTranslate")
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.Set ADS_NAME_TYPE_1779, dn
result = nto.Get(ADS_NAME_TYPE_NT4)
Response.Write "<p>Name in the translated format: " & result
%>
</body>
</html>
指定したユーザー資格情報を使用して、指定したディレクトリ サーバー、ドメイン、またはグローバル カタログにバインドし、name translate オブジェクトを初期化します。
| lnSetType | INT | in | 実行する初期化の種類。指定できる値は ADS_NAME_INITTYPE_ENUM で定義されています。 |
| bstrADsPath | LPWSTR | in | lnInitType の値に応じた、サーバーまたはドメインの名前。ADS_NAME_INITTYPE_GC が指定された場合、このパラメーターは無視されます。現在のコンピューターが属するドメインのグローバル カタログ サーバーが name translate 操作の実行に使用されます。この場合、コンピューターがドメインに参加していないとグローバル カタログが見つからないため、このメソッドは失敗します。詳細については、ADS_NAME_INITTYPE_ENUM を参照してください。 |
| bstrUserID | LPWSTR | in | ユーザー名。 |
| bstrDomain | LPWSTR | in | ユーザーのドメイン名。 |
| bstrPassword | LPWSTR | in | ユーザーのパスワード。 |
戻り値
標準の HRESULT または RPC エラー コードを返します。以下を含みます。
解説(Remarks)
初期化に成功した後は、name translate オブジェクトを使用して、ディレクトリ オブジェクトの名前変換要求を送信します。詳細については、IADsNameTranslate::Set、IADsNameTranslate::Get、IADsNameTranslate::SetEx、または IADsNameTranslate::GetEx を参照してください。
例
次の C/C++ コード例では、IADsNameTranslate::InitEx メソッドを使用して、ユーザー オブジェクトの識別名を s 形式で表示する前に IADsNameTranslate オブジェクトを初期化します。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->InitEx(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"),
CComBSTR("jeffsmith"),
CComBSTR("Fabrikam"),
CComBSTR("top secret"));
if (FAILED(hr)) { exit 1;}
hr =pNto->Set(ADS_NAME_TYPE_1779,
CComBSTR("cn=jeffsmith,cn=users,dc=Fabrikam,dc=com"));
if(FAILED(hr)) {exit 1;}
BSTR bstr;
hr = pNto->Get(ADS_NAME_TYPE_NT4, &bstr);
printf("Name in the translated format: %S\n", bstr);
SysFreeString(bstr);
pNto->Release();
次の Visual Basic コード例では、IADsNameTranslate::InitEx メソッドを使用して IADsNameTranslate オブジェクトを初期化し、ユーザー オブジェクトの識別名を s ユーザー名形式で表示します。
Dim nto As New NameTranslate
dso="CN=jeffsmith, CN=users, DC=Fabrikam dc=COM"
server = "myServer"
domain = "Fabrikam"
user = "jeffsmith"
passwd = "myPass"
nto.InitEx ADS_NAME_INITTYPE_SERVER, server,user,domain,passwd
nto.Set ADS_NAME_TYPE_1779, dso
trans = nto.Get(ADS_NAME_TYPE_NT4)
MsgBox "Name in the translated format: " & trans
次の VBScript/ASP コード例では、IADsNameTranslate::InitEx メソッドを使用して IADsNameTranslate オブジェクトを初期化し、ユーザー オブジェクトの識別名を s ユーザー名形式で表示します。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2 ' VBScript cannot read
const ADS_NAME_TYPE_1779 = 1 ' enumeration definition
const ADS_NAME_TYPE_NT4 = 3
server = "myServer"
domain = "Fabrikam"
user = "jeffsmith"
passwd = "myPass"
dn = "CN=jeffsmith,CN=Users,DC=Fabrikam,DC=COM"
Set nto = Server.CreateObject("NameTranslate")
nto.InitEx ADS_NAME_INITTYPE_SERVER, server,user,domain,passwd
nto.Set ADS_NAME_TYPE_1779, dn
result = nto.Get(ADS_NAME_TYPE_NT4)
Response.Write "<p>Name in the translated format: " & result
%>
</body>
</html>
指定したオブジェクトを名前変換用に設定するようディレクトリ サービスに指示します。
| lnSetType | INT | in | ディレクトリ オブジェクトの名前の形式。詳細については、ADS_NAME_TYPE_ENUM を参照してください。 |
| bstrADsPath | LPWSTR | in | オブジェクト名。たとえば "CN=Administrator, CN=users, DC=Fabrikam, DC=com" です。 |
戻り値
このメソッドは、標準の HRESULT の戻り値をサポートします。以下を含みます。
解説(Remarks)
このメソッドを呼び出してオブジェクト名を設定する前に、IADsNameTranslate::Init または IADsNameTranslate::InitEx を使用してディレクトリ サービスへの接続を確立しておく必要があります。
IADsNameTranslate::Set メソッドを使用すると、ディレクトリ サーバー上に存在するオブジェクトの名前変換を設定できます。参照追跡 (referral chasing) が有効な場合、このメソッドは他のサーバーで見つかったオブジェクトも設定します。参照追跡の詳細については、IADsNameTranslate Property Methods を参照してください。
例
次の C/C++ コード例では、IADsNameTranslate::Set メソッドを使用してオブジェクトを設定し、その名前を RFC 1779 形式から s ユーザー名形式に変換できるようにします。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->Init(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"));
if (FAILED(hr)) { exit 1;}
hr =pNto->Set(ADS_NAME_TYPE_1779,
CComBSTR("cn=jeffsmith,cn=users,dc=Fabrikam,dc=com"));
if(FAILED(hr)) {exit 1;}
BSTR bstr;
hr = pNto->Get(ADS_NAME_TYPE_NT4, &bstr);
printf("Name in the translated format: %S\n", bstr);
SysFreeString(bstr);
pNto->Release();
次の Visual Basic コード例では、IADsNameTranslate::Set メソッドを使用してオブジェクトを設定し、その名前を RFC 1779 形式から s ユーザー名形式に変換できるようにします。
Dim nto As New NameTranslate
dso="CN=jeffsmith, CN=users, DC=Fabrikam dc=COM"
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.Set ADS_NAME_TYPE_1779, dso
trans = nto.Get(ADS_NAME_TYPE_NT4)
次の VBScript/ASP コード例では、IADsNameTranslate::Set メソッドを使用してオブジェクトを設定し、その名前を RFC 1779 形式から s ユーザー名形式に変換します。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2 ' VBScript cannot read
const ADS_NAME_TYPE_1779 = 1 ' enumeration definition
const ADS_NAME_TYPE_NT4 = 3
dn = "CN=jeffsmith,CN=Users,DC=Fabrikam,DC=COM"
Set nto = Server.CreateObject("NameTranslate")
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.Set ADS_NAME_TYPE_1779, dn
result = nto.Get(ADS_NAME_TYPE_NT4)
Response.Write "<p>Name in the translated format: " & result
%>
</body>
</html>
指定した形式でディレクトリ オブジェクトの名前を取得します。
| lnFormatType | INT | in | 出力する名前の形式の種類。詳細については、ADS_NAME_TYPE_ENUM を参照してください。このメソッドは、ADS_NAME_TYPE_ENUM の ADS_NAME_TYPE_SID_OR_SID_HISTORY_NAME 要素をサポートしません。 |
| pbstrADsPath | LPWSTR* | out | 返されるオブジェクトの名前。 |
戻り値
このメソッドは、標準の HRESULT の戻り値をサポートします。以下を含みます。
解説(Remarks)
このメソッドを使用すると、単一のディレクトリ オブジェクトの名前を取得できます。複数のオブジェクトの名前を取得するには、IADsNameTranslate::GetEx を使用します。
参照追跡が有効な場合、このメソッドは、接続先のサーバー上に存在しない指定オブジェクトのパスを追跡して解決しようとします。
例
次の C/C++ コード例は、RFC 1779 に準拠した識別名を GUID 形式に変換する方法を示します。ディレクトリ サーバーのコンピューター名は "myServer" です。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->Init(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"));
if (FAILED(hr)) { exit 1;}
hr =pNto->Set(ADS_NAME_TYPE_1779, CComBSTR
("CN=jeff,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM,O=Internet"));
if(FAILED(hr)) {exit 1;}
BSTR bstr;
hr = pNto->Get(ADS_NAME_TYPE_GUID, &bstr);
printf("Translation: %S\n", bstr);
SysFreeString(bstr);
pNto->Release();
次の Visual Basic コード例は、RFC 1779 に準拠した識別名を GUID 形式に変換する方法を示します。ディレクトリ サーバーのコンピューター名は "myServer" です。
Dim nto As New NameTranslate
Dim result As String
dn = "CN=rob,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM,O=Internet"
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.Set ADS_NAME_TYPE_1779, dn
result = nto.Get ADS_NAME_TYPE_GUID
MsgBox result
次の VBScript/ASP コード例は、RFC 1779 に準拠した識別名を GUID 形式に変換する方法を示します。ディレクトリ サーバーのマシン名は "myServer" です。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2
const ADS_NAME_TYPE_1779 = 1
const ADS_NAME_TYPE_NT4 = 3
server = "myServer"
user = "jeffsmith"
dom = "Fabrikam"
passwd = "top secret"
Set nto = Server.CreateObject("NameTranslate")
nto.InitEx ADS_NAME_INITTYPE_SERVER, server, user, dom, passwd
nto.Set ADS_NAME_TYPE_1779, dn
result = nto.Get(ADS_NAME_TYPE_GUID)
Response.Write "<p>Translated name: " & result
%>
</body>
</html>
名前変換用のオブジェクトの配列を確立します。
| lnFormatType | INT | in | 入力する名前の形式の種類。詳細については、ADS_NAME_TYPE_ENUM を参照してください。 |
| pvar | VARIANT | in | オブジェクト名を保持する文字列のバリアント配列。 |
戻り値
このメソッドは、標準の HRESULT の戻り値をサポートします。以下を含みます。
解説(Remarks)
参照追跡 (referral chasing) オプションが有効な場合でも、IADsNameTranslate::SetEx メソッドを使用して他のサーバー上に存在するオブジェクトの名前変換を設定することはできません。参照追跡の詳細については、IADsNameTranslate Property Methods を参照してください。
IADsNameTranslate::SetEx を使用すると、複数のオブジェクトの名前を設定できます。ただし、すべての名前が同じ形式である必要があります。
例
次の C/C++ コード例では、IADsNameTranslate::SetEx メソッドを使用して、名前を RFC 1779 形式から Windows ユーザー名形式に変換するオブジェクトの配列を設定します。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->Init(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"));
if (FAILED(hr)) { exit 1;}
LPWSTR str[1] = { L"CN=jim,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM",
L"CN=rob,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM"};
DWORD dwNum = sizeof(str)/sizeof(LPWSTR);
VARIANT varStr;
VariantInit(&varStr);
hr = ADsBuildVarArrayStr(str,dwNum,&varStr);
hr =pNto->SetEx(ADS_NAME_TYPE_1779, varStr);
if(FAILED(hr)) {exit 1;}
VariantClear(&varStr);
hr = pNto->GetEx(ADS_NAME_TYPE_GUID, &varStr);
if(FAILED(hr)) {exit 1;}
LONG lstart, lend;
SAFEARRAY *sa = V_ARRAY(&varStr);
VARIANT varItem;
VariantInit(&varItem);
printf("Names in the translated format:\n");
for (long idx = lstart; idx <= lend; idx++)
{
hr = SafeArrayGetElement(sa, &idx, &varItem);
printf(" %S\n", V_BSTR(&varItem));
VariantClear(&varItem);
}
VariantClear(&varStr);
pNto->Release();
次の Visual Basic コード例では、IADsNameTranslate::SetEx メソッドを使用して、名前を RFC 1779 形式から s ユーザー名形式に変換するオブジェクトの配列を設定します。
Dim nto As New NameTranslate
dso(0)="CN=jeffSmith, CN=users, DC=Fabrikam dc=COM"
dso(1)="CN=brendaDiaz, CN=users, DC=Fabrikam dc=COM"
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.SetEx ADS_NAME_TYPE_1779, dso
trans = nto.GetEx(ADS_NAME_TYPE_NT4)
Msgbox "Translations: " & trans(0) & "," & trans(1)
次の VBScript/ASP コード例では、IADsNameTranslate::SetEx メソッドを使用して、名前を RFC 1779 形式から s ユーザー名形式に変換するオブジェクトの配列を設定します。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2 ' VBScript cannot read
const ADS_NAME_TYPE_1779 = 1 ' enumeration definition
const ADS_NAME_TYPE_NT4 = 3
dn(0) = "CN=jeffSmith,CN=Users,DC=Fabrikam,DC=COM"
dn(1) = "CN=brendaDiaz,CN=Users,DC=Fabrikam,DC=COM"
Set nto = Server.CreateObject("NameTranslate")
nto.Init ADS_NAME_INITTYPE_SERVER, "myServer"
nto.SetEx ADS_NAME_TYPE_1779, dn
result = nto.GetEx(ADS_NAME_TYPE_NT4)
Response.Write "<p>Name in the translated format: " & result(0) & _
", & result(1)
%>
</body>
</html>
指定した形式でオブジェクト名を取得します。
| lnFormatType | INT | in | 出力する名前に使用する形式の種類。使用できるさまざまな形式の種類の詳細については、ADS_NAME_TYPE_ENUM を参照してください。このメソッドは、ADS_NAME_TYPE_ENUM の ADS_NAME_TYPE_SID_OR_SID_HISTORY_NAME 要素をサポートしません。 |
| pvar | VARIANT* | out | 返されるオブジェクトの名前を保持する文字列のバリアント配列。 |
戻り値
このメソッドは、標準の HRESULT の戻り値をサポートします。以下を含みます。
解説(Remarks)
このメソッドは、複数のオブジェクトの名前を取得します。ただし、返されるすべての名前は単一の形式を使用します。
参照追跡が有効な場合でも、このメソッドは、接続先のサーバー上に存在しない指定オブジェクトのパスを追跡して解決しようとはしません。
例
次の C/C++ コード例は、RFC 1779 に準拠した識別名を GUID 形式に変換する方法を示します。ディレクトリ サーバーのコンピューター名は "myServer" です。
IADsNameTranslate *pNto;
HRESULT hr;
hr = CoCreateInstance(CLSID_NameTranslate,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsNameTranslate,
(void**)&pNto);
if(FAILED(hr)) { exit 1;}
hr = pNto->Init(ADS_NAME_INITTYPE_SERVER,
CComBSTR("myServer"));
if (FAILED(hr)) { exit 1;}
LPWSTR str[1] = { L"CN=jim,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM",
L"CN=rob,CN=Users,DC=myDomain,DC=Fabrikam,DC=COM"};
DWORD dwNum = sizeof(str)/sizeof(LPWSTR);
VARIANT varStr;
VariantInit(&varStr);
hr = ADsBuildVarArrayStr(str,dwNum,&varStr);
hr =pNto->SetEx(ADS_NAME_TYPE_1779, varStr);
if(FAILED(hr)) {exit 1;}
VariantClear(&varStr);
hr = pNto->GetEx(ADS_NAME_TYPE_GUID, &varStr);
if(FAILED(hr)) {exit 1;}
LONG lstart, lend;
SAFEARRAY *sa = V_ARRAY(&varStr);
VARIANT varItem;
VariantInit(&varItem);
printf("Names in the translated format:\n");
for (long idx = lstart; idx <= lend; idx++)
{
hr = SafeArrayGetElement(sa, &idx, &varItem);
printf(" %S\n", V_BSTR(&varItem));
VariantClear(&varItem);
}
VariantClear(&varStr);
pNto->Release();
次のコード例は、複数の名前を RFC 1779 型から GUID 型に変換する方法を示します。ディレクトリ サーバーのコンピューター名は "myServer" です。
Dim nto As new NameTranslate
Dim result As Variant
Dim ns(1) As String
nto.Init ADS_NAME_INITTTYPE_SERVER, "myServer"
ns(0)="CN=rob,CN=users,DC=example,DC=Fabrikam,DC=COM,O=Internet"
ns(1)="CN=jim,CN=users,DC=example,DC=Fabrikam,DC=COM,O=Internet"
nto.SetEx ADS_NAME_TYPE_1779, ns
nto.GetEx ADS_NAME_TYPE_GUID, result
MsgBox "name(0): " & result(0) & " name(1): " & result(1)
次の VBScript/ASP コード例は、RFC 1779 に準拠した 2 つの識別名を GUID 形式に変換します。ディレクトリ サーバーのコンピューター名は "myServer" です。
<%@ Language=VBScript %>
<html>
<body>
<%
Dim nto
const ADS_NAME_INITTYPE_SERVER = 2
const ADS_NAME_TYPE_1779 = 1
const ADS_NAME_TYPE_NT4 = 3
server = "myServer"
user = "jeffsmith"
dom = "Fabrikam"
passwd = "top secret"
Set nto = Server.CreateObject("NameTranslate")
nto.InitEx ADS_NAME_INITTYPE_SERVER, server, user, dom, passwd
ns(0)="CN=rob,CN=users,DC=example,DC=Fabrikam,DC=COM,O=Internet"
ns(1)="CN=jim,CN=users,DC=example,DC=Fabrikam,DC=COM,O=Internet"
nto.SetEx ADS_NAME_TYPE_1779, ns
result = nto.GetEx(ADS_NAME_TYPE_GUID)
Response.Write "<p>Names in the translated format: " & result(0) & _
", " & result(1)
%>
</body>
</html>
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IADsNameTranslate "{B1B272A3-3625-11D1-A3A4-00C04FB950DC}" #usecom global IADsNameTranslate IID_IADsNameTranslate "{}" #comfunc global IADsNameTranslate_put_ChaseReferral 7 int #comfunc global IADsNameTranslate_Init 8 int,wstr #comfunc global IADsNameTranslate_InitEx 9 int,wstr,wstr,wstr,wstr #comfunc global IADsNameTranslate_Set 10 int,wstr #comfunc global IADsNameTranslate_Get 11 int,var #comfunc global IADsNameTranslate_SetEx 12 int,int #comfunc global IADsNameTranslate_GetEx 13 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IADsNameTranslate "{B1B272A3-3625-11D1-A3A4-00C04FB950DC}" #usecom global IADsNameTranslate IID_IADsNameTranslate "{}" #comfunc global IADsNameTranslate_put_ChaseReferral 7 int #comfunc global IADsNameTranslate_Init 8 int,wstr #comfunc global IADsNameTranslate_InitEx 9 int,wstr,wstr,wstr,wstr #comfunc global IADsNameTranslate_Set 10 int,wstr #comfunc global IADsNameTranslate_Get 11 int,sptr #comfunc global IADsNameTranslate_SetEx 12 int,int #comfunc global IADsNameTranslate_GetEx 13 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。