Вопрос 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
Правильно ли это?
Есть ли варианты лучше?