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:
Memory marshalling in Windows CE
Related stories: