It is my understanding (and please correct me if I\'m wrong) that the only difference between them is whether the string might be modified by the called function. (PCWSTR ,
A function taking a PCWSTR parameter can't use that parameter to modify the characters of the string, unlike a function that takes a LPWSTR parameter. Each character of the string is stored as WCHAR.
UnmanagedType.LPWStr is the right marshalling type for such a string.