IMG_UINT32 DBGDIOCDrivReadString(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32OutLen; PDBG_IN_READSTRING psParams; psParams = (PDBG_IN_READSTRING) pvInBuffer; pui32OutLen = (IMG_UINT32 *) pvOutBuffer; *pui32OutLen = ExtDBGDrivReadString(psParams->pvStream,psParams->pszString,psParams->ui32StringLen); return(IMG_TRUE); }
/***************************************************************************** FUNCTION : DBGDrivReadString PURPOSE : PARAMETERS : RETURNS : *****************************************************************************/ static IMG_UINT32 DBGDIOCDrivReadString(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32OutLen; PDBG_IN_READSTRING psParams; PDBG_STREAM psStream; IMG_CHAR *pcReadBuffer; #ifdef UNDER_WDDM IMG_CHAR *pcClientBuffer; #endif psParams = (PDBG_IN_READSTRING) pvInBuffer; pui32OutLen = (IMG_UINT32 *) pvOutBuffer; #ifdef UNDER_WDDM /* WDDM DbgDriv operates at DISPATCH level so it cannot write directly * to pdump.exe's userspace buffer */ pcReadBuffer = HostNonPageablePageAlloc( (psParams->ui32StringLen + HOST_PAGESIZE - 1) / HOST_PAGESIZE); pcClientBuffer = psParams->u.pszString; #else pcReadBuffer = psParams->u.pszString; #endif psStream = SID2PStream(psParams->hStream); if (psStream != (PDBG_STREAM)IMG_NULL) { *pui32OutLen = ExtDBGDrivReadString(psStream, pcReadBuffer, psParams->ui32StringLen); #ifdef UNDER_WDDM if(*pui32OutLen > 0) { HostMemCopy(pcClientBuffer, pcReadBuffer, *pui32OutLen); } HostNonPageablePageFree(pcReadBuffer); #endif return(IMG_TRUE); } else { /* invalid SID */ *pui32OutLen = 0; return(IMG_FALSE); } }
/***************************************************************************** FUNCTION : DBGDrivReadString PURPOSE : PARAMETERS : RETURNS : *****************************************************************************/ static IMG_UINT32 DBGDIOCDrivReadString(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32OutLen; PDBG_IN_READSTRING psParams; PDBG_STREAM psStream; psParams = (PDBG_IN_READSTRING) pvInBuffer; pui32OutLen = (IMG_UINT32 *) pvOutBuffer; psStream = SID2PStream(psParams->hStream); if (psStream != (PDBG_STREAM)IMG_NULL) { *pui32OutLen = ExtDBGDrivReadString(psStream, psParams->u.pszString,psParams->ui32StringLen); return(IMG_TRUE); } else { /* invalid SID */ *pui32OutLen = 0; return(IMG_FALSE); } }