Я предполагаю, что TCHAR
является широким. Если нет, то вы можете решить это, так как оно совпадает с полем char
.
Структура хочет быть объявлена так:
public struct LPRData
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 257)]
public byte[] DID;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 257)]
public string PrimarySDCURL;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 257)]
public string SecondarySDCURL;
}
Единственный сложный момент заключается в том, что компактный каркас не позволяет легко преобразовать Unicode в ANSI. Таким образом, чтобы назначить DID вам нужно:
string DID = ...;
LPRData data = new LPRData();
data.DID = DID.Encoding.ASCII.GetBytes(DID);