XtfGetConsoleFieldValue

检索有关主机的信息,可以是以下项之一:工具 IP 地址、主机 IP 地址、AccessKey、主机 ID、HostName、设备 ID、开发工具包证书类型、SystemMajorVersion、SystemMinorVersion、SystemBuildVersion 或 SystemRevisionVersion。

语法

HRESULT XtfGetConsoleFieldValue(
         XtfConsoleInfo hConsoleInfo,
         XtfConsoleFieldId field,
         XtfConsoleFieldType *fieldType,
         BYTE *buffer,
         UINT32 *cbBuffer
)  

参数

hConsoleInfo
类型:XtfConsoleInfo

[in] XtfGetConsoleInfoList 返回的 XtfConsoleInfo 对象。

field
类型:XtfConsoleFieldId

[in] 要返回的值的标识符,可以是以下项之一:工具 IP 地址、主机 IP 地址、AccessKey、主机 ID、HostName、设备 ID、开发工具包证书类型、SystemMajorVersion、SystemMinorVersion、SystemBuildVersion 或 SystemRevisionVersion。

fieldType
类型:XtfConsoleFieldType *

[out] 返回的值的数据类型:UINT32 或 PWCHAR。

buffer
类型:BYTE *

[out] 一个指针,指向接收返回的值的缓冲区。 要确定所需的缓冲区大小,请将此参数设置为 nullptr 并将 cbBuffer 参数设置为 0。 该函数返回时,将 bufferSize 设置为所需缓冲区的大小(字节)。 如果需要,此大小将包括终止 null 字符占用的空间。

cbBuffer
类型:UINT32 *

[in, out] 输入时缓冲区的大小(字节)。 如果返回的值是 PWCHAR,该缓冲区大小必须包括终止 null 字符占用的空间。 输出时缓冲区所需的长度(字节)。

返回值

类型:HRESULT

返回值 S_OK 指示函数成功,缓冲区 fieldType 包含该值和该值的类型。

返回值 HRESULT_FROM_WIN32(ERROR_MORE_DATA) 指示为 buffer 参数提供的缓冲区不够大。 所需的缓冲区大小包含在 cbBuffer 中。

如果在未预配的开发工具包上没有提供该值(例如设备 ID),返回的 HRESULT 将是 0x80070490。

任何其他值指示出现意外错误。

备注

使用 XtfGetConsoleInfoList 获取 XtfConsoleInfo 对象,然后使用 XtfGetConsoleFieldValue 从该对象检索值。 检索到所需的值后,使用 XtfCloseConsoleInfoList 释放与返回的 XtfConsoleInfo 对象关联的资源。

注意

XtfGetConsoleInfoList 从主机检索所有信息。 XtfGetConsoleFieldValue 仅对该检索的信息进行迭代。

注意

如果目标主机尚未预配 DeviceID 将返回空值。

int wmain(int argc, wchar_t **argv)
{
  HRESULT             hr             = S_OK;
  PCWSTR              consoleAddress = L" 190.167.10.18";
  XtfConsoleInfo      hConsoleInfo   = nullptr;
  XtfConsoleFieldType fieldType      = XtfConsoleFieldType::FieldTypeUINT32;
  BYTE *              pValueBuffer   = nullptr;
  UINT32              bufferSize     = 0;

  hr = XtfGetConsoleInfoList(consoleAddress, &hConsoleInfo);
  if (FAILED(hr))
  {
    wprintf(L"\n\n*** XtfGetConsoleInfoList failed 0x%x", hr);
    return hr;
  }

  hr = XtfGetConsoleFieldValue(hConsoleInfo, XtfConsoleFieldId::ConsoleId, &fieldType, nullptr, &bufferSize);
  if (hr != HRESULT_FROM_WIN32(ERROR_MORE_DATA))
  {
    XtfCloseConsoleInfoList(hConsoleInfo);
    wprintf(L"\n\n*** XtfGetConsoleFieldValue failed 0x%x", hr);
    return hr;
  }

  pValueBuffer = new BYTE[bufferSize];

  hr  = XtfGetConsoleFieldValue(hConsoleInfo, XtfConsoleFieldId::ConsoleId, &fieldType, pValueBuffer, &bufferSize);
  if (SUCCEEDED(hr))
  {
    PWCHAR consoleId = (PWCHAR)pValueBuffer;
    wprintf(L"\n\n*** Console ID is %s", consoleId);
  }
  else
  {
    wprintf(L"\n\n*** XtfGetConsoleFieldValue failed 0x%x", hr);
  }

  XtfCloseConsoleInfoList(hConsoleInfo);
  delete[] pValueBuffer;

  return hr;
}  

要求

头文件:xtfapi.h

库:XtfApi.lib

支持平台:Windows(适用于 Xbox 主机工具)

另请参阅

XTF 传输错误(NDA 主题)要求授权
其他 Xtf API