Host applications communicate with trusted applications using the Intel® DAL Host Interface Service (Intel® DAL HIS) – a DLL whose API is used to install trusted applications and to establish sessions between a host application and a trusted application. A host application requests a trusted application to perform a function by invoking the Intel® DAL HIS function JHI_SendAndRecv2. The function call identifies the trusted application, the session and which trusted application function to invoke. It sends data when the trusted application function requires data. It returns a status and, when necessary, data.
The communication flow between the Intel® DAL HIS and the trusted application is a host-initiated “Send and Receive” model. The Intel DAL HIS sends a message (consisting of a command and data) to the trusted application. The trusted application executes the command and then sends back a return code and data. The Intel DAL HIS waits for and receives this data.
Intel DAL HIS also supports an event-driven approach. Trusted applications can communicate with host applications and with other trusted applications, and can initiate such communications. Applications can subscribe to an event type, to post an event either to all subscribers or to specific subscribers, and to determine the source of an event. This allows a host application to receive an event generated in a trusted application. For example, this mechanism can be used to enable a host application to receive timer interrupts from a trusted application based on Intel DAL firmware.
There is no memory sharing mechanism between a trusted application and the host. The Intel® DAL HIS Application buffer size limitation is 2MB and will not accept a buffer larger than that.