NVAPI_INCOMPATIBLE_STRUCT_VERSION error returned with NvAPI_GPU_GetBoardInfo

For some reason, whether I used the NV_BOARD_INFO or NV_BOARD_INFO_V1 structure for the NvAPI_GPU_GetBoardInfo method, I keep getting the NVAPI_INCOMPATIBLE_STRUCT_VERSION API error. Any ideas on what I am doing wrong. Is it because I did not fully instantiate the NV_BOARD_INFO struct? Below is a quick code snippet of what I am doing. Code is written in C++/CLI:

NV_BOARD_INFO boardInfo; // variable to store the graphics card info

// get the graphics card information for the selected GPU
m_apiStatus = NvAPI_GPU_GetBoardInfo(m_ptrPhysicalHandlers[physHandlerNum], &boardInfo);

// check if the API successfully obtained information for the graphics card
if (m_apiStatus == NVAPI_OK)
{
// the API was successful
// store the board serial number
return gcnew String((const char*)boardInfo.BoardNum);
}
else
{
// let the user know an error occurred with the API
throw gcnew Exception(GetApiErrMsg(m_apiStatus));
}

So I made a few updates and found out that I had to set the version information before trying to get the serial number. However, now the serial number being returned contains all zeros for the graphics card I am using for testing. Graphics card is a GTX 1050 TI. Updated source code is below:

NV_BOARD_INFO_V1 boardInfo = { 0 }; // variable to store the graphics card info
boardInfo.version = NV_BOARD_INFO_VER1;

// get the graphics card information for the selected GPU
m_apiStatus = NvAPI_GPU_GetBoardInfo(m_ptrPhysicalHandlers[physHandlerNum], &boardInfo);

// check if the API successfully obtained information for the graphics card
if (m_apiStatus == NVAPI_OK)
{
String^ serialNumber = “”; // the graphics card serial number

    // the API was successful
   // get total number of characters the serial number has
   size_t numElements = (sizeof(boardInfo.BoardNum) / sizeof(boardInfo.BoardNum[0]));

  // iterate through each character and add them to the variable to return
 for (size_t i = 0; i < numElements; i++)
 {
      serialNumber += boardInfo.BoardNum[i];
 }

 // return the board serial number
 return serialNumber;

}
else
{
// let the user know an error occurred with the API
throw gcnew Exception(GetApiErrMsg(m_apiStatus));
}

Thank you for contacting NVIDIA developer forum. We have sent your query to the respective team for details and we will get back to you on same.

Thanks,
NVAPI Forum Moderator