Esempio n. 1
0
IMG_UINT32 DBGDIOCDrivReadLF(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer)
{
	IMG_UINT32 *				pui32BytesCopied;
	PDBG_IN_READ		psInParams;

	psInParams = (PDBG_IN_READ) pvInBuffer;
	pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer;

	*pui32BytesCopied = ExtDBGDrivReadLF((PDBG_STREAM) psInParams->pvStream,psInParams->ui32OutBufferSize,psInParams->pui8OutBuffer);

	return(IMG_TRUE);
}
Esempio n. 2
0
/*****************************************************************************
 FUNCTION	:	DBGDIOCDrivReadLF

 PURPOSE	:

 PARAMETERS	:

 RETURNS	:
*****************************************************************************/
static IMG_UINT32 DBGDIOCDrivReadLF(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 = ExtDBGDrivReadLF(psStream,
										 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);
	}
}
Esempio n. 3
0
/*****************************************************************************
 FUNCTION	:	DBGDIOCDrivReadLF

 PURPOSE	:

 PARAMETERS	:

 RETURNS	:
*****************************************************************************/
static IMG_UINT32 DBGDIOCDrivReadLF(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 = ExtDBGDrivReadLF(psStream,
										 psInParams->ui32OutBufferSize,
										 psInParams->u.pui8OutBuffer);
		return(IMG_TRUE);
	}
	else
	{
		/* invalid SID */
		*pui32BytesCopied = 0;
		return(IMG_FALSE);
	}
}