XtfGetConsoleFieldValue

Retrieves information about a console, one of Tools IP Address, Console IP Address, AccessKey, Console ID, HostName, Device ID, DevKit Cert type, SystemMajorVersion, SystemMinorVersion, SystemBuildVersion, or SystemRevisionVersion.

Syntax

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

Parameters

hConsoleInfo
Type: XtfConsoleInfo

[in] XtfConsoleInfo object returned by XtfGetConsoleInfoList.

field
Type: XtfConsoleFieldId

[in] Identifier of the value to return, one of Tools IP Address, Console IP Address, AccessKey, Console ID, HostName, Device ID, DevKit Cert type, SystemMajorVersion, SystemMinorVersion, SystemBuildVersion, or SystemRevisionVersion.

fieldType
Type: XtfConsoleFieldType *

[out] The data type of the returned value, either UINT32 or PWCHAR.

buffer
Type: BYTE *

[out] A pointer to the buffer that receives the returned value. To determine the required buffer size, set this parameter to nullptr and the cbBuffer parameter to 0. When the function returns bufferSize will be set to the size of the required buffer in bytes. This size will include space for the terminating null character if required.

cbBuffer
Type: UINT32 *

[in, out] On input the size of the buffer in bytes. The buffer size must include room for a terminating null character if the returned value is a PWCHAR. On output the required length of buffer in bytes.

Return value

Type: HRESULT

A return value of S_OK indicates the function succeeded and buffer fieldType contains the value and type of the value.

A return value of HRESULT_FROM_WIN32(ERROR_MORE_DATA) indicates the buffer supplied for the buffer argument was not large enough. The required buffer size is contained in cbBuffer.

If the value is not available (for example Device ID) on an unprovisioned devkit, the return HRESULT will be 0x80070490.

Any other value indicates an unexpected error occurred.

Remarks

Use XtfGetConsoleInfoList to get an XtfConsoleInfo object then use XtfGetConsoleFieldValue to retrieve the values from that object. When you have retrieved the values you needed, use XtfCloseConsoleInfoList to free resources associated with the returned XtfConsoleInfo object.

Note

XtfGetConsoleInfoList retrieves all of the information from the console. XtfGetConsoleFieldValue simply iterates across that retrieved information.

Note

If the target console has not been provisioned DeviceID will return an empty value.

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;
}  

Requirements

Header: xtfapi.h

Library: XtfApi.lib

Supported platforms: Windows (for Xbox console tools)

See also

XTF Transport Errors (NDA topic)Authorization required
Additional Xtf APIs