Вопрос 1
Например есть WinAPI структура
typedef struct _PRINTER_INFO_4 { LPTSTR pPrinterName; LPTSTR pServerName; DWORD Attributes; } PRINTER_INFO_4, *PPRINTER_INFO_4; где pPrinterName - Pointer to a null-terminated string
которая в Пурике определена как
Structure PRINTER_INFO_4 *pPrinterName *pServerName Attributes.l EndStructure
Правильно ли я понимаю что ClearStructure(@var, PRINTER_INFO_4) не очистит блок на который указывает *pPrinterName
и при обнулении *pPrinterName в памяти останется потеряный блок т.е. утечка памяти ?
Если я прав то сначала нужно сделать FreeMemory(var\*pPrinterName) ?
Можно ли заменить *pPrinterName на PrinterName.s или на PrinterName$ ?
Если можно то правильно ли сработает ClearStructure(@var, PRINTER_INFO_4) и удалит блок памяти в котором размещается строка?
------------------------------------------------------------------------------------------------------------------------------------------
Вопрос 2
есть WinAPI структура
typedef struct _PRINTER_NOTIFY_INFO_DATA { WORD Type; WORD Field; DWORD Reserved; DWORD Id; union { DWORD adwData[2]; struct { DWORD cbBuf; LPVOID pBuf; } Data; } NotifyData; } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA; ;
Я описал ее так
Structure PRINTER_NOTIFY_INFO_DATA_PART2 cbBuf.l ;Indicates the size, in bytes, of the buffer pointed to by pBuf. pBuf.l ; Pointer to a buffer that contains the field's current data. EndStructure Structure PRINTER_NOTIFY_INFO_DATA type.w ; PRINTER_NOTIFY_TYPE / JOB_NOTIFY_TYPE field.w ; Indicates the field that changed reserved.l ; id.l ; Indicates the job identifier if the Type member specifies JOB_NOTIFY_TYPE. If the Type member specifies PRINTER_NOTIFY_TYPE, this member is undefined StructureUnion adwData.l[2] DataExt.PRINTER_NOTIFY_INFO_DATA_PART2 EndStructureUnion EndStructure
Правильно ли это?
Есть ли варианты лучше?