A version of this page is also available for

Windows Embedded CE 6.0 R3


This message is sent when an application passes data to another application.


WM_COPYDATA wParam = (WPARAM)(HWND) hwnd; 
    lParam = (LPARAM)(PCOPYDATASTRUCT) pcds;


  • hwnd
    Handle to the window passing the data.
  • pcds
    Pointer to a COPYDATASTRUCT structure that contains the data to be passed.

Return Value

If the receiving application processes this message, it should return TRUE; otherwise, it should return FALSE.


An application must use the SendMessage function to send this message, not the PostMessage function.

The data being passed must not contain pointers or other references to objects not accessible to the application receiving the data.

While this message is being sent, the referenced data must not be changed by another thread of the sending process.

The receiving application should consider the data read-only. The pcds parameter is valid only during the processing of the message. The receiving application should not free the memory referenced by pcds. If the receiving application must access the data after SendMessage returns, it must copy the data into a local buffer.

For Windows CE 1.0 through 2.11, pcds cannot be a global or static variable. This causes the COPYDATASTRUCT structure to be corrupt when it reaches its destination. Later versions of Windows Embedded CE do not have this restriction.


Header winuser.h
Windows Embedded CE Windows CE 1.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also