This message is posted to the source window procedure. The source window procedure is responsible for interpreting the structure given by param2. It should make a copy of all the parameters and then return.

The receiver of this message should create a thread in which to dispatch this message in order to facilitate a prompt reply. The thread can then call DevPostDeviceModes and DevOpenDC as appropriate.

Note: Technically, the message is sent, but it is from a spun-off thread so the effect is that of a posted message - it is not synchronous.

All the drag and drop protocol messages occur synchronously during the DrgDrag call. If the DM_PRINTOBJECT message is returned to the application asynchronously, by the time the application gets the message, the DRAGINFO structure (and DRAGITEM inside) have already been freed. The application will trap when it tries to use param1 of the DM_PRINTOBJECT message (the pointer to the DRAGITEM data structure).

For debugging purposes, the application can keep a static copy of the DRAGINFO pointer and use DrgAccessDraginfo to reaccess the shared DRAGINFO structure during DM_PRINTOBJECT message processing.