@“Peter_Viscarola_(OSR)”
As a test, I added trace code into the EvtIoInCallerContext to print the data at Virtual User Address. The print worked when EvtIoInCallerContext ran and performed MmMapLockedPagesSpecifyCache - the data being 0 as expected, due to RtlZeroMemory & FPGA not yet being configured.
However, subsequent calls to EvtIoInCallerContext shows the print throwing an exception - I suspect access violation, same as User SW.
EvtIoInCallerContext (added printing)
// Check and if no Virtual User Address, call MmMapLockedPagesSpecifyCache (See previous post for details).
...
if( NULL != deviceContextP->virtualUserAddr )
{
UINT64 *pBuffer = ( UINT64* ) deviceContextP->virtualUserAddr;
for( auto x{ 0 }; x < 10; ++x )
{
__try
{
TraceEvents( TRACE_LEVEL_INFORMATION, DBG_IOCTLS
, "Addr[%u] @[0x%p] = [%llu]"
, x
, pBuffer
, *( pBuffer + x ) );
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
TraceEvents( TRACE_LEVEL_ERROR, DBG_IOCTLS, "EXCEPTION in TraceEvent" );
}
}
}