The pen driver can also receive messages sent from Windows and from 16-bit pen-based applications. A pen driver message is generated by calling the SendDriverMessage function, identifying the pen driver as the recipient. Note that SendDriverMessage can access the 16-bit pen driver only from a 16-bit virtual machine. Thus, a 32-bit application cannot send messages to the pen driver directly. To communicate with the pen driver, a 32-bit application must provide its own 16-bit DLL to thunk calls to SendDriverMessage. A thunk is an implementation technique that allows 32-bit code to call 16-bit code (and vice versa, if necessary).