hiddbg: modify hiddbgAttachHdlsWorkBuffer to accept a user supplied buffer and size

This commit is contained in:
ndeadly 2022-05-03 14:59:18 +02:00
parent e768ac74f9
commit 7568385a7d
2 changed files with 8 additions and 4 deletions

View File

@ -402,8 +402,10 @@ Result hiddbgUnsetAllAutoPilotVirtualPadState(void);
* @brief Initialize Hdls. * @brief Initialize Hdls.
* @note Only available with [7.0.0+]. * @note Only available with [7.0.0+].
* @param[out] session_id [13.0.0+] \ref HiddbgHdlsSessionId * @param[out] session_id [13.0.0+] \ref HiddbgHdlsSessionId
* @param[in] buffer An existing buffer to be used as transfer memory. If null a new transfer memory will be created.
* @param[in] size Size of the supplied buffer.
*/ */
Result hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id); Result hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id, void *buffer, size_t size);
/** /**
* @brief Exit Hdls, must be called at some point prior to \ref hiddbgExit. * @brief Exit Hdls, must be called at some point prior to \ref hiddbgExit.

View File

@ -467,7 +467,7 @@ static Result _hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id, Trans
return _hiddbgCmdInTmemOutU64(tmem, &session_id->id, 324); return _hiddbgCmdInTmemOutU64(tmem, &session_id->id, 324);
} }
Result hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id) { Result hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id, void *buffer, size_t size) {
Result rc=0; Result rc=0;
if (session_id) session_id->id = 0; if (session_id) session_id->id = 0;
@ -478,8 +478,10 @@ Result hiddbgAttachHdlsWorkBuffer(HiddbgHdlsSessionId *session_id) {
if (g_hiddbgHdlsInitialized) if (g_hiddbgHdlsInitialized)
return MAKERESULT(Module_Libnx, LibnxError_AlreadyInitialized); return MAKERESULT(Module_Libnx, LibnxError_AlreadyInitialized);
if (buffer==NULL)
rc = tmemCreate(&g_hiddbgHdlsTmem, 0x1000, Perm_Rw); rc = tmemCreate(&g_hiddbgHdlsTmem, 0x1000, Perm_Rw);
else
rc = tmemCreateFromMemory(&g_hiddbgHdlsTmem, buffer, size, Perm_Rw);
if (R_FAILED(rc)) return rc; if (R_FAILED(rc)) return rc;
rc = _hiddbgAttachHdlsWorkBuffer(session_id, &g_hiddbgHdlsTmem); rc = _hiddbgAttachHdlsWorkBuffer(session_id, &g_hiddbgHdlsTmem);