Beispiel #1
0
void EnumerateProfilesOnSystem()
{
  NvAPI_Status status;
  status = NvAPI_Initialize();
  if(status != NVAPI_OK)
    PrintError(status);

  NvDRSSessionHandle hSession = 0;
  status = NvAPI_DRS_CreateSession(&hSession);
  if(status != NVAPI_OK)
    PrintError(status);

  status = NvAPI_DRS_LoadSettings(hSession);
  if(status != NVAPI_OK)
    PrintError(status);

  NvDRSProfileHandle hProfile = 0;
  unsigned int index = 0;
  while((status = NvAPI_DRS_EnumProfiles(hSession, index, &hProfile)) == NVAPI_OK)
  {
    printf("Profile in position %d:\n", index);
    DisplayProfileContents(hSession, hProfile);
    index++;
  }
  if(status == NVAPI_END_ENUMERATION)
  {
    // this is expected at the end of the enumeration
  }
  else
    if(status != NVAPI_OK)
      PrintError(status);

  NvAPI_DRS_DestroySession(hSession);
  hSession = 0;
}
void ll_nvapi_init(NvDRSSessionHandle hSession)
{
	// (2) load all the system settings into the session
	NvAPI_Status status = NvAPI_DRS_LoadSettings(hSession);
	if (status != NVAPI_OK) 
	{
		nvapi_error(status);
		return;
	}

	NvAPI_UnicodeString wsz = { 0 };
	memcpy_s(wsz, sizeof(wsz), NVAPI_APPNAME, sizeof(NVAPI_APPNAME));
	status = NvAPI_DRS_SetCurrentGlobalProfile(hSession, wsz);
	if (status != NVAPI_OK)
	{
		nvapi_error(status);
		return;
	}

	// (3) Obtain the current profile. 
	NvDRSProfileHandle hProfile = 0;
	status = NvAPI_DRS_GetCurrentGlobalProfile(hSession, &hProfile);
	if (status != NVAPI_OK) 
	{
		nvapi_error(status);
		return;
	}

	// load settings for querying 
	status = NvAPI_DRS_LoadSettings(hSession);
	if (status != NVAPI_OK)
	{
		nvapi_error(status);
		return;
	}

	//get the preferred power management mode for Second Life
	NVDRS_SETTING drsSetting = {0};
	drsSetting.version = NVDRS_SETTING_VER;
	status = NvAPI_DRS_GetSetting(hSession, hProfile, PREFERRED_PSTATE_ID, &drsSetting);
	if (status == NVAPI_SETTING_NOT_FOUND)
	{ //only override if the user hasn't specifically set this setting
		// (4) Specify that we want the VSYNC disabled setting
		// first we fill the NVDRS_SETTING struct, then we call the function
		drsSetting.version = NVDRS_SETTING_VER;
		drsSetting.settingId = PREFERRED_PSTATE_ID;
		drsSetting.settingType = NVDRS_DWORD_TYPE;
		drsSetting.u32CurrentValue = PREFERRED_PSTATE_PREFER_MAX;
		status = NvAPI_DRS_SetSetting(hSession, hProfile, &drsSetting);
		if (status != NVAPI_OK) 
		{
			nvapi_error(status);
			return;
		}

        // (5) Now we apply (or save) our changes to the system
        status = NvAPI_DRS_SaveSettings(hSession);
        if (status != NVAPI_OK) 
        {
            nvapi_error(status);
            return;
        }
	}
	else if (status != NVAPI_OK)
	{
		nvapi_error(status);
		return;
	}
}
Beispiel #3
0
int main()
{
  if (NvAPI_Initialize() != NVAPI_OK)
    throw std::runtime_error("NVIDIA Api not initialized");

  if (NvAPI_DRS_CreateSession(&_session) != NVAPI_OK)
    throw std::runtime_error("can't create session");

  if (NvAPI_DRS_LoadSettings(_session) != NVAPI_OK)
    throw std::runtime_error("can't load system settings");

  if (NvAPI_DRS_GetCurrentGlobalProfile(_session, &_profile) != NVAPI_OK)
    throw std::runtime_error("can't get current global profile");

  NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS];
  NvAPI_Status status;
  NvU32 GpuCount;
  NvU32 DeviceId;
  NvU32 SubSystemId;
  NvU32 RevisionId;
  NvU32 ExtDeviceId;
  NvU32 BusId;
  NvU32 BiosRevision;
  NvU32 BiosRevisionOEM;
  NV_BOARD_INFO BoardInfo;
  BoardInfo.version = NV_BOARD_INFO_VER;
  NvU32 ConfiguredFeatureMask;
  NvU32 ConsistentFeatureMask;
  NvU32 CoreCount;

  NvAPI_EnumPhysicalGPUs(nvGPUHandle, &GpuCount);

  NvAPI_ShortString str;
  NvAPI_GPU_GetFullName(nvGPUHandle[0], str);
  NvAPI_GPU_GetPCIIdentifiers(nvGPUHandle[0], &DeviceId, &SubSystemId, &RevisionId, &ExtDeviceId);
  NvAPI_GPU_GetBusId(nvGPUHandle[0], &BusId);
  NvAPI_GPU_GetVbiosRevision(nvGPUHandle[0], &BiosRevision);
  NvAPI_GPU_GetVbiosOEMRevision(nvGPUHandle[0], &BiosRevisionOEM);
  NvAPI_GPU_GetVbiosVersionString(nvGPUHandle[0], str);
  status = NvAPI_GPU_GetBoardInfo(nvGPUHandle[0], &BoardInfo);
  status = NvAPI_GPU_WorkstationFeatureQuery(nvGPUHandle[0], &ConfiguredFeatureMask, &ConsistentFeatureMask);
  status = NvAPI_GPU_GetGpuCoreCount(nvGPUHandle[0], &CoreCount);

  NV_CHIPSET_INFO info;
  info.version = NV_CHIPSET_INFO_VER_4;
   status =NvAPI_SYS_GetChipSetInfo(&info);
  NvAPI_GetInterfaceVersionString(str);

  unsigned int test= (unsigned int) -0x68;
  unsigned int index = 0;
  while ((status = NvAPI_DRS_EnumProfiles(_session, index, &_profile)) == NVAPI_OK)
  {
    _profInfo.version = NVDRS_PROFILE_VER;

    if (NvAPI_DRS_GetProfileInfo(_session, _profile, &_profInfo) != NVAPI_OK)
      throw std::runtime_error("can't get current global profile info");

    index++;
  }

  EnumerateProfilesOnSystem();

  NvAPI_DRS_DestroySession(_session);

  return 0;
}