|
Memory marshalling in Windows CE
2006-12-01
Windows Embedded CE 6.0 introduced a new, "third generation" kernel. Perhaps not surprisingly, changes in kernel architecture have impacted the way system software such as drivers and servers access memory. This detailed technical whitepaper by Windows CE developer Sue Loh explains the new memory access...
procedures. "Marshalling," or pointer preparation, is the process of preparing a pointer that a driver can use to access a calling application's buffer, writes Loh. In CE 5, this is a fairly simple "mapping" function, because all processes share the same address space. In CE 6, on the other hand, each process has its own unique address space, so marshalling can't be as simple as just mapping the pointer. Either the memory must be copied from one process to another, or a new virtual address must be allocated in the driver process and pointed at the same physical memory the caller was using. Either way, resources are allocated inside the driver process, and must be freed when the driver is done with them. The paper goes on to examine the distinction between synchronous and asynchronous access, and wraps up with a look at some security and reliability issues. Read the full whitepaper here: Related stories:
|