XtfGetCredentialInfoList
返回 XtfNetworkCredentials
对象,该对象包含主机上当前存储的凭据的列表。
语法
HRESULT XtfGetCredentialInfoList(
LPCWSTR address,
XtfNetworkCredentials* credentialInfo
)
参数
address
类型:LPCWSTR
[in] 主机的地址。
credentialInfo
类型:XtfNetworkCredentials*
[out] 一个 XtfNetworkCredentials
对象,该对象包含主机上当前存储的凭据的列表。
返回值
类型:HRESULT
如果返回值为 S_OK
,则表示函数成功且你可从 credentialInfo 对象检索凭据信息。 任何其他值指示出现意外错误。
备注
使用 XtfAddCredential 来添加凭据。 使用 XtfRemoveCredential 来删除凭据。 使用 XtfGetCredentialInfoList、XtfGetCredentialInfoCount、XtfGetCredentialServerName 和 XtfGetCredentialUserName 来枚举存储的凭据的当前列表。 使用 XtfCloseCredentialInfoList 来释放 XtfGetCredentialInfoList 返回的 XtfNetworkCredentials
。
注意
XtfGetCredentialInfoList 从主机检索所有信息。 XtfGetCredentialServerName 和 XtfGetCredentialUserName 仅对检索到的信息进行迭代。
注意
检索到所需的值后,使用 XtfCloseCredentialInfoList 释放与返回的 XtfNetworkCredentials 对象关联的资源。
HRESULT hr = S_OK;
PCWSTR consoleAddress = L"190.167.10.182";
XtfNetworkCredentials credentialInfo = nullptr;
UINT32 count = 0;
PWSTR pServerNameBuffer = nullptr;
PWSTR pUserNameBuffer = nullptr;
UINT32 bufferSize = 0;
hr = XtfAddCredential(consoleAddress, L"devpc001", L"devpc001\\test", L"test");
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfAddCredential failed 0x%x", hr);
return hr;
}
hr = XtfAddCredential(consoleAddress, L"devpc002", L"devpc002\\test1", L"test1");
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfAddCredential failed 0x%x", hr);
return hr;
}
hr = XtfGetCredentialInfoList(consoleAddress, &credentialInfo);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialInfoList failed 0x%x", hr);
return hr;
}
hr = XtfGetCredentialInfoCount(credentialInfo, &count);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialInfoCount failed 0x%x", hr);
return hr;
}
wprintf(L"\n\n*** List of Users:");
wprintf(L"\n\t*** Number of users: %d", count);
for (UINT32 i=0; i < count ; i++)
{
bufferSize=0;
hr = XtfGetCredentialServerName(credentialInfo, i, nullptr, &bufferSize);
if (hr != HRESULT_FROM_WIN32(ERROR_MORE_DATA))
{
wprintf(L"\n\n*** XtfGetCredentialServerName failed 0x%x", hr);
return hr;
}
pServerNameBuffer = new WCHAR[bufferSize];
hr = XtfGetCredentialServerName(credentialInfo, i, pServerNameBuffer, &bufferSize);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialServerName failed 0x%x", hr);
return hr;
}
bufferSize=0;
hr = XtfGetCredentialUserName(credentialInfo, i, nullptr, &bufferSize);
if (hr != HRESULT_FROM_WIN32(ERROR_MORE_DATA))
{
wprintf(L"\n\n*** XtfGetCredentialUserName failed 0x%x", hr);
return hr;
}
pUserNameBuffer = new WCHAR[bufferSize];
hr = XtfGetCredentialUserName(credentialInfo, i, pUserNameBuffer, &bufferSize);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialUserName failed 0x%x", hr);
return hr;
}
wprintf(L"\n\t Server: %ls, User: %ls", pServerNameBuffer, pUserNameBuffer);
delete[] pServerNameBuffer;
delete[] pUserNameBuffer;
}
XtfCloseCredentialInfoList(credentialInfo);
hr = XtfRemoveCredential(consoleAddress, L"devpc001");
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfRemoveCredential failed 0x%x", hr);
return hr;
}
hr = XtfRemoveCredential(consoleAddress, L"devpc002");
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfRemoveCredential failed 0x%x", hr);
return hr;
}
hr = XtfGetCredentialInfoList(consoleAddress, &credentialInfo);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialInfoList failed 0x%x", hr);
return hr;
}
hr = XtfGetCredentialInfoCount(credentialInfo, &count);
if (FAILED(hr))
{
wprintf(L"\n\n*** XtfGetCredentialInfoCount failed 0x%x", hr);
return hr;
}
wprintf(L"\n\n*** Number of users: %d", count);
XtfCloseCredentialInfoList(credentialInfo);
wprintf(L"\n\n");
return hr;
要求
头文件:xtfapi.h
库:XtfApi.lib
支持平台:Windows(适用于 Xbox 主机工具)