public static NvAPI_Status DRS_EnumSettings(IntPtr hSession, IntPtr hProfile, uint startIndex, ref uint settingsCount, ref NVDRS_SETTING[] settings)
        {
            NvAPI_Status res;

            IntPtr pSettings;

            NativeArrayHelper.SetArrayData(settings, out pSettings);
            try
            {
                res      = DRS_EnumSettingsInternal(hSession, hProfile, startIndex, ref settingsCount, pSettings);
                settings = NativeArrayHelper.GetArrayData <NVDRS_SETTING>(pSettings, (int)settingsCount);
            }
            finally
            {
                Marshal.FreeHGlobal(pSettings);
            }
            return(res);
        }
        public static NvAPI_Status DRS_EnumApplications <TDrsAppVersion>(IntPtr hSession, IntPtr hProfile, uint startIndex, ref uint appCount, ref TDrsAppVersion[] apps)
        {
            NvAPI_Status res;

            IntPtr pSettings;

            NativeArrayHelper.SetArrayData(apps, out pSettings);
            try
            {
                res  = DRS_EnumApplicationsInternal(hSession, hProfile, startIndex, ref appCount, pSettings);
                apps = NativeArrayHelper.GetArrayData <TDrsAppVersion>(pSettings, (int)appCount);
            }
            finally
            {
                Marshal.FreeHGlobal(pSettings);
            }
            return(res);
        }
        public static NvAPI_Status DRS_EnumAvailableSettingIds(out List <uint> settingIds, uint maxCount)
        {
            NvAPI_Status res;
            var          settingIdArray = new uint[maxCount];
            var          pSettingIds    = IntPtr.Zero;

            NativeArrayHelper.SetArrayData(settingIdArray, out pSettingIds);
            try
            {
                res = DRS_EnumAvailableSettingIdsInternal(pSettingIds, ref maxCount);

                settingIdArray = NativeArrayHelper.GetArrayData <uint>(pSettingIds, (int)maxCount);
                settingIds     = settingIdArray.ToList();
            }
            finally
            {
                Marshal.FreeHGlobal(pSettingIds);
            }
            return(res);
        }