Skip to content

Commit

Permalink
GeForceNOW-SDK Release 1.10
Browse files Browse the repository at this point in the history
This is the official 1.10 release. See README.md for more details.
  • Loading branch information
DavidW-NV committed Jan 9, 2023
1 parent bbfb58b commit d68f95e
Show file tree
Hide file tree
Showing 24 changed files with 81 additions and 192 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ add_custom_target(Dist SOURCES ${GFN_SDK_RUNTIME_SOURCES} ${GFN_SDK_COMMON_SOURC
if (BUILD_SAMPLES)
add_subdirectory(samples/CGameAPISample)
add_subdirectory(samples/SDKDllDirectRefSample)
add_subdirectory(samples/SampleService)

This comment has been minimized.

Copy link
@09eliowe28523

09eliowe28523 Jan 18, 2023

hey

This comment has been minimized.

Copy link
@xenon-32

xenon-32 Jan 28, 2023

hi

if (USE_STATIC_CRT)
add_subdirectory(samples/SampleLauncher)
Expand Down
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# NVIDIA GeForce NOW SDK Release 1.9.1
# NVIDIA GeForce NOW SDK Release 1.10

## At a Glance

Expand All @@ -10,10 +10,8 @@ Please refer to the [SDK GFN Primer](./doc/SDK-GFN-PRIMER.pdf) for a more detail

### What's New in This Release

* API name change : `gfnGetCustomData` renamed to `gfnGetPartnerData`
* API name change : `gfnGetAuthData` renamed to `gfnGetPartnerSecureData`
* Struct `StartStreamNonceInput` members modified : `pchCustomData` and `pchCustomAuth` renamed to `pchPartnerData` and `pchPartnerSecureData` respectively.
* Updated Mobile Touch Integration Guide
* The API `gfnIsRunningInCloudSecure` no longer requires elevation to call successfully
* Updated Cloud Check Integration Guide for new API requirements
* Bug fixes and other minor improvements

## Developer Content Portal
Expand Down Expand Up @@ -44,10 +42,10 @@ The distribution is laid out as below:
├─── README.md
|
├─── doc
| │ SDK-GFN-DEEP-LINKING.pdf
| │ SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf
| │ SDK-GFN-ACCOUNT-LINKING-SSO-GUIDE.pdf
| │ SDK-GFN-CLOUD-API.pdf
| │ SDK-GFN-DEEP-LINKING.pdf
| │ SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf
| │ SDK-GFN-NGN-ENDPOINT.pdf
| │ SDK-GFN-PRIMER.pdf
| └───SDK-GFN-RUNTIME
Expand All @@ -72,7 +70,6 @@ The distribution is laid out as below:
| README.md
├───CGameAPISample
├───SampleLauncher
├───SampleService
└───SDKDllDirectRefSample
```
Binary file modified doc/SDK-GFN-CLOUD-API.pdf
Binary file not shown.
Binary file modified doc/SDK-GFN-PRIMER.pdf
Binary file not shown.
20 changes: 10 additions & 10 deletions doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -131,41 +131,41 @@
<tr class="memdesc:a9aa29280fe4f9aacd9ad25ffbcedd854"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Major Version. <br /></td></tr>
<tr class="separator:a9aa29280fe4f9aacd9ad25ffbcedd854"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36f9286155f18f70725b6c0cbba4b966"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f9286155f18f70725b6c0cbba4b966"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a36f9286155f18f70725b6c0cbba4b966">NVGFNSDK_VERSION_MINOR</a>&#160;&#160;&#160;9</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a36f9286155f18f70725b6c0cbba4b966">NVGFNSDK_VERSION_MINOR</a>&#160;&#160;&#160;10</td></tr>
<tr class="memdesc:a36f9286155f18f70725b6c0cbba4b966"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Minor Version. <br /></td></tr>
<tr class="separator:a36f9286155f18f70725b6c0cbba4b966"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45a66dd5a42989cb2e2903a91e1f5996"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45a66dd5a42989cb2e2903a91e1f5996"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a45a66dd5a42989cb2e2903a91e1f5996">NVGFNSDK_VERSION_SHORT</a>&#160;&#160;&#160;1.9</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a45a66dd5a42989cb2e2903a91e1f5996">NVGFNSDK_VERSION_SHORT</a>&#160;&#160;&#160;1.10</td></tr>
<tr class="memdesc:a45a66dd5a42989cb2e2903a91e1f5996"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Version. <br /></td></tr>
<tr class="separator:a45a66dd5a42989cb2e2903a91e1f5996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3d6fee7aa89956d23257d5cca655b65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3d6fee7aa89956d23257d5cca655b65"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ae3d6fee7aa89956d23257d5cca655b65">NVGFNSDK_VERSION_PATCH</a>&#160;&#160;&#160;1</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ae3d6fee7aa89956d23257d5cca655b65">NVGFNSDK_VERSION_PATCH</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ae3d6fee7aa89956d23257d5cca655b65"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Patch Version. <br /></td></tr>
<tr class="separator:ae3d6fee7aa89956d23257d5cca655b65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68ee89a9d83ad9be38e85b244266d616"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68ee89a9d83ad9be38e85b244266d616"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a68ee89a9d83ad9be38e85b244266d616">NVGFNSDK_VERSION_BUILD</a>&#160;&#160;&#160;31581083</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a68ee89a9d83ad9be38e85b244266d616">NVGFNSDK_VERSION_BUILD</a>&#160;&#160;&#160;32038373</td></tr>
<tr class="memdesc:a68ee89a9d83ad9be38e85b244266d616"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Build Version. <br /></td></tr>
<tr class="separator:a68ee89a9d83ad9be38e85b244266d616"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03aac63521881472fe76bdd1c79bd7cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03aac63521881472fe76bdd1c79bd7cb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a03aac63521881472fe76bdd1c79bd7cb">NVGFNSDK_VERSION_LONG</a>&#160;&#160;&#160;1.9.1.31581083</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#a03aac63521881472fe76bdd1c79bd7cb">NVGFNSDK_VERSION_LONG</a>&#160;&#160;&#160;1.10.0.32038373</td></tr>
<tr class="memdesc:a03aac63521881472fe76bdd1c79bd7cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Version. <br /></td></tr>
<tr class="separator:a03aac63521881472fe76bdd1c79bd7cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac693d90ad6ba31c11dc77310915a0b95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac693d90ad6ba31c11dc77310915a0b95"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ac693d90ad6ba31c11dc77310915a0b95">NVGFNSDK_VERSION_STR</a>&#160;&#160;&#160;&quot;1.9.1.31581083&quot;</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ac693d90ad6ba31c11dc77310915a0b95">NVGFNSDK_VERSION_STR</a>&#160;&#160;&#160;&quot;1.10.0.32038373&quot;</td></tr>
<tr class="memdesc:ac693d90ad6ba31c11dc77310915a0b95"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Version string. <br /></td></tr>
<tr class="separator:ac693d90ad6ba31c11dc77310915a0b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfa7253c4f2b2794ea1d4d09091185f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa7253c4f2b2794ea1d4d09091185f8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_STR_PROD</b>&#160;&#160;&#160;&quot;1.9.1&quot;</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_STR_PROD</b>&#160;&#160;&#160;&quot;1.10.0&quot;</td></tr>
<tr class="separator:acfa7253c4f2b2794ea1d4d09091185f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0286d07acb196d7344ec45a3f60e17b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0286d07acb196d7344ec45a3f60e17b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ab0286d07acb196d7344ec45a3f60e17b">NVGFNSDK_VERSION_BUILDCL</a>&#160;&#160;&#160;31581083</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_gfn_sdk_8h.html#ab0286d07acb196d7344ec45a3f60e17b">NVGFNSDK_VERSION_BUILDCL</a>&#160;&#160;&#160;32038373</td></tr>
<tr class="memdesc:ab0286d07acb196d7344ec45a3f60e17b"><td class="mdescLeft">&#160;</td><td class="mdescRight">GFN SDK Build CL. <br /></td></tr>
<tr class="separator:ab0286d07acb196d7344ec45a3f60e17b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97b6acf7c485e73a75f0df2d0bd319bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97b6acf7c485e73a75f0df2d0bd319bb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_BUILDH</b>&#160;&#160;&#160;3158</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_BUILDH</b>&#160;&#160;&#160;3203</td></tr>
<tr class="separator:a97b6acf7c485e73a75f0df2d0bd319bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61f683f9c27a580bff7af4f817061716"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61f683f9c27a580bff7af4f817061716"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_BUILDL</b>&#160;&#160;&#160;1083</td></tr>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NVGFNSDK_VERSION_BUILDL</b>&#160;&#160;&#160;8373</td></tr>
<tr class="separator:a61f683f9c27a580bff7af4f817061716"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Expand Down
2 changes: 1 addition & 1 deletion doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h_source.html

Large diffs are not rendered by default.

9 changes: 4 additions & 5 deletions doc/SDK-GFN-RUNTIME/html/group__launcher.html
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ <h2 class="groupheader">Function Documentation</h2>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Description</dt><dd>Quickly determines if the calling application is running in GFN environment or not with a low security assurance, and without requiring process elevation.</dd></dl>
<dl class="section user"><dt>Description</dt><dd>Quickly determines if the calling application is running in GFN environment or not with a low security assurance, and without requiring process registration.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Use to quickly determine whether to enable / disable any low-value GFN cloud environment specific application logic, for example, to block any calls to <a class="el" href="group__launcher.html#gaa2d0aa6c6d9325ff2ff5e2beb82c47d6">gfnStartStream()</a> to avoid an error, or to know if <a class="el" href="group__launcher.html#ga70ea27f47639201d48de5d3006b20481">gfnGetTitlesAvailable</a> can be called without an error.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API is meant to fill the need to quickly determine if the call looks to be in the GFN cloud environment. It purposefully trades off resource-intensive checks for fast response. Do not tie any logic or features of value to this API as the call stack could be tampered with. For that purpose, use <a class="el" href="group__launcher.html#gaf5ab33bd8cd24cb26cda5bacf1764e3f">gfnIsRunningInCloudSecure</a>.</dd></dl>
Expand Down Expand Up @@ -536,9 +536,9 @@ <h2 class="groupheader">Function Documentation</h2>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Description</dt><dd>Determines if calling application is running in GFN environment or not, and what degree of security assurance is assigned to the result.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client Elevated Process</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Call from an elevated process to securely determine whether running in GFN cloud, and use the GfnIsRunningInCloudAssurance value to decide the risk to enable any application specific logic for that environment.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API must be called from a high-integrity elevated process, or it will fail by design. To prevent man-in-the-middle (MiM) attacks, you must also securely load the SDK library, checking the integrity of the digital signature on the binary. Make sure to use the value returned from GfnIsRunningInCloudAssurance to decide if the check was certain enough without tampering to enable the logic or feature associated with the API call.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Call from an NVIDIA-approved process to securely determine whether running in GFN cloud, and use the GfnIsRunningInCloudAssurance value to decide the risk to enable any application specific logic for that environment.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API must be called from a process that has been registered with NVIDIA, or it will return an error. Refer to the Cloud Check API Guide on how to get your application registered. To prevent man-in-the-middle (MiM) attacks, you must also securely load the SDK library, checking the integrity of the digital signature on the binary. Make sure to use the value returned from GfnIsRunningInCloudAssurance to decide if the check was certain enough without tampering to enable the logic or feature associated with the API call.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">assurance</td><td>- Level of assurance that API is running in GFN cloud environment</td></tr>
Expand All @@ -548,7 +548,6 @@ <h2 class="groupheader">Function Documentation</h2>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">gfnSuccess</td><td>- On success </td></tr>
<tr><td class="paramname">gfnElevationRequired</td><td>- Was called from non-elevated process</td></tr>
</table>
</dd>
</dl>
Expand Down
9 changes: 4 additions & 5 deletions doc/SDK-GFN-RUNTIME/html/group__wrapper.html
Original file line number Diff line number Diff line change
Expand Up @@ -678,7 +678,7 @@ <h2 class="groupheader">Function Documentation</h2>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Description</dt><dd>Calls <a class="el" href="group__launcher.html#ga3b33985a46d6bd20fdea2c4865dc6a0f">gfnIsRunningInCloud</a> to determine if calling application is running in GFN environment, and without requiring process elevation.</dd></dl>
<dl class="section user"><dt>Description</dt><dd>Calls <a class="el" href="group__launcher.html#ga3b33985a46d6bd20fdea2c4865dc6a0f">gfnIsRunningInCloud</a> to determine if calling application is running in GFN environment, and without requiring process registration.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Use to quickly determine whether to enable / disable any low-value GFN cloud environment specific application logic, for example, to block any calls to <a class="el" href="group__wrapper.html#ga8b35031da8034f2c2e85f2f1b8ec127c">GfnStartStream()</a> to avoid an error, or to know if GetTitlesAvailable can be called without an error.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API is meant to fill the need to quickly determine if the call looks to be in the GFN cloud environment. It purposefully trades off resource-intensive checks for fast response. Do not tie any logic or features of value to this API as the call stack could be tampered with. For that purpose, use <a class="el" href="group__wrapper.html#ga6fa2dbe2bfa3e67cd41963bf28ac5e65">GfnIsRunningInCloudSecure</a>.</dd></dl>
Expand Down Expand Up @@ -715,9 +715,9 @@ <h2 class="groupheader">Function Documentation</h2>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Description</dt><dd>Calls <a class="el" href="group__launcher.html#gaf5ab33bd8cd24cb26cda5bacf1764e3f">gfnIsRunningInCloudSecure</a> to determine if calling application is running in GFN environment, and what level of security assurance that the result is valid.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client Elevated Process</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Call from an elevated process to securely determine whether running in GFN cloud, and use the GfnIsRunningInCloudAssurance value to decide the risk to enable any application specific logic for that environment.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API must be called from a high-integrity elevated process, or it will fail by design. To prevent man-in-the-middle (MiM) attacks, you must also securely load the SDK library, checking the integrity of the digital signature on the binary. Make sure to use the value returned from GfnIsRunningInCloudassurance to decide if the check was certain enough without tampering to enable the logic or feature associated with the API call.</dd></dl>
<dl class="section user"><dt>Environment</dt><dd>Cloud and Client</dd></dl>
<dl class="section user"><dt>Usage</dt><dd>Call from an NVIDIA-approved process to securely determine whether running in GFN cloud, and use the GfnIsRunningInCloudAssurance value to decide the risk to enable any application specific logic for that environment.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This API must be called from a process that has been registered with NVIDIA, or it will return an error. Refer to the Cloud Check API Guide on how to get your application registered. To prevent man-in-the-middle (MiM) attacks, you must also securely load the SDK library, checking the integrity of the digital signature on the binary. Make sure to use the value returned from GfnIsRunningInCloudassurance to decide if the check was certain enough without tampering to enable the logic or feature associated with the API call.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">assurance</td><td>- Likelihood and level of security assurance defined via <a class="el" href="_gfn_runtime_sdk___c_a_p_i_8h.html#a1fa5e44e6ea4087ad75c7fd0ebf7bfa7">GfnIsRunningInCloudAssurance</a> that API is running in GFN cloud environment</td></tr>
Expand All @@ -727,7 +727,6 @@ <h2 class="groupheader">Function Documentation</h2>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">gfnSuccess</td><td>- If the query was successful. </td></tr>
<tr><td class="paramname">gfnRequiredElevation</td><td>- The API was called from a non-elevated process </td></tr>
<tr><td class="paramname">gfnClientLibraryNotFound</td><td>- GFN SDK client-side library could not be found </td></tr>
<tr><td class="paramname">gfnCloudLibraryNotFound</td><td>- GFN SDK cloud-side library could not be found </td></tr>
<tr><td class="paramname">gfnAPINotFound</td><td>- The API was not found in the GFN SDK Library </td></tr>
Expand Down
Loading

0 comments on commit d68f95e

Please sign in to comment.