/***************************************************************************** FUNCTION : DBGDrivRead PURPOSE : PARAMETERS : RETURNS : *****************************************************************************/ static IMG_UINT32 DBGDIOCDrivRead(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32BytesCopied; PDBG_IN_READ psInParams; PDBG_STREAM psStream; psInParams = (PDBG_IN_READ) pvInBuffer; pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; psStream = SID2PStream(psInParams->hStream); if (psStream != (PDBG_STREAM)IMG_NULL) { *pui32BytesCopied = ExtDBGDrivRead(psStream, psInParams->bReadInitBuffer, psInParams->ui32OutBufferSize, psInParams->u.pui8OutBuffer); return(IMG_TRUE); } else { /* invalid SID */ *pui32BytesCopied = 0; return(IMG_FALSE); } }
IMG_UINT32 DBGDIOCDrivRead(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32BytesCopied; PDBG_IN_READ psInParams; psInParams = (PDBG_IN_READ) pvInBuffer; pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; *pui32BytesCopied = ExtDBGDrivRead((PDBG_STREAM) psInParams->pvStream,psInParams->bReadInitBuffer, psInParams->ui32OutBufferSize,psInParams->pui8OutBuffer); return(IMG_TRUE); }
/***************************************************************************** FUNCTION : DBGDrivRead PURPOSE : PARAMETERS : RETURNS : *****************************************************************************/ static IMG_UINT32 DBGDIOCDrivRead(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) { IMG_UINT32 * pui32BytesCopied; PDBG_IN_READ psInParams; PDBG_STREAM psStream; IMG_UINT8 *pui8ReadBuffer; #ifdef UNDER_WDDM IMG_UINT8 *pui8ClientBuffer; #endif psInParams = (PDBG_IN_READ) pvInBuffer; pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; #ifdef UNDER_WDDM /* WDDM DbgDriv operates at DISPATCH level so it cannot write directly * to pdump.exe's userspace buffer */ pui8ReadBuffer = HostNonPageablePageAlloc( (psInParams->ui32OutBufferSize + HOST_PAGESIZE - 1) / HOST_PAGESIZE); pui8ClientBuffer = psInParams->u.pui8OutBuffer; #else pui8ReadBuffer = psInParams->u.pui8OutBuffer; #endif psStream = SID2PStream(psInParams->hStream); if (psStream != (PDBG_STREAM)IMG_NULL) { *pui32BytesCopied = ExtDBGDrivRead(psStream, psInParams->bReadInitBuffer, psInParams->ui32OutBufferSize, pui8ReadBuffer); #ifdef UNDER_WDDM if(*pui32BytesCopied > 0) { HostMemCopy(pui8ClientBuffer, pui8ReadBuffer, *pui32BytesCopied); } HostNonPageablePageFree(pui8ReadBuffer); #endif return(IMG_TRUE); } else { /* invalid SID */ *pui32BytesCopied = 0; return(IMG_FALSE); } }