Сделал, как Вы написали, только dmSize заполнял и даже циклом прошелся по нему, задавая размер структуры, но без изменений

Может я функцию неправильно вызываю?
X++:
#define.SizeOfStruct (156)
static Binary NewDEVMODE()
{
Binary DEVMODE = new Binary(#SizeOfStruct);
container con = WinAPI::getVersion();
;
// DEVMODE.dWord (0, #SizeOfStruct); // Specifies the size, in bytes, of the structure
DEVMODE.byte ( 0 ); //dmDeviceName[CCHDEVICENAME];
DEVMODE.word ( 32 ); //dmSpecVersion
DEVMODE.word ( 34 ); //dmDriverVersion
DEVMODE.word ( 36, #SizeOfStruct ); //dmSize
DEVMODE.word ( 38 ); //dmDriverExtra
DEVMODE.dWord ( 40 ); //dmFields
DEVMODE.word ( 44 ); //dmOrientation
DEVMODE.word ( 46 ); //dmPaperSize
DEVMODE.word ( 48 ); //dmPaperLength
DEVMODE.word ( 50 ); //dmPaperWidth
DEVMODE.word ( 52 ); //dmScale
DEVMODE.word ( 54 ); //dmCopies
DEVMODE.word ( 56 ); //dmDefaultSource
DEVMODE.word ( 58 ); //dmPrintQuality
// DEVMODE.dWord ( 48 ); //dmPosition
// DEVMODE.dWord ( 56 ); //dmDisplayOrientation
// DEVMODE.dWord ( 64 ); //dmDisplayFixedOutput
DEVMODE.word ( 60 ); //dmColor
DEVMODE.word ( 62 ); //dmDuplex
DEVMODE.word ( 64 ); //dmYResolution
DEVMODE.word ( 66 ); //dmTTOption
DEVMODE.word ( 68 ); //dmCollate
DEVMODE.byte ( 70 ); //dmFormName[CCHFORMNAME]; ???
DEVMODE.word ( 102 ); //dmLogPixels
DEVMODE.dWord ( 104 ); //dmBitsPerPel
DEVMODE.dWord ( 108 ); //dmPelsWidth
DEVMODE.dWord ( 112 ); //dmPelsHeight
DEVMODE.dWord ( 116 ); //dmDisplayFlags
// DEVMODE.dWord ( 120 ); //dmNup
DEVMODE.dWord ( 120 ); //dmDisplayFrequency
// if (conPeek(con, 4) >= 0x0400)
{
DEVMODE.dWord ( 124 ); //dmICMMethod
DEVMODE.dWord ( 128 ); //dmICMIntent
DEVMODE.dWord ( 132 ); //dmMediaType
DEVMODE.dWord ( 136 ); //dmDitherType
DEVMODE.dWord ( 140 ); //dmReserved1
DEVMODE.dWord ( 144 ); //dmReserved2
}
// if (conPeek(con, 4) >= 0x0500 || conPeek(con, 4) >= 0x0400)
{
DEVMODE.dWord ( 148 ); //dmPanningWidth
DEVMODE.dWord ( 152 ); //dmPanningHeight
}
return DEVMODE;
}
Входной параметр поменял, без результатов.