Информация об изменениях

Сообщение Re[3]: C++/CLI утечка USER объектов от 27.05.2015 4:20

Изменено 27.05.2015 4:26 jyuyjiyuijyu

Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Тут еще один момент есть, и в этом часто делают ошибку (и в примере ТС тоже). GetLastError можно вызывать, только если BOOL функция вернула FALSE. В противном случае ее вообще вызывать нельзя.


а вот интересно, когда юзается implicit pinvoke как в посте выше, эвристика ставит флаг
setlasterror для апишек сама, то CLR вызывает GetLastError для сохранения результата для GetLastWin32Error в любом случае или только когда апишка вернула FALSE?

не думаю только когда апишка вернула FALSE, потому что функции мьютекса возвращают хендл(истину) и
устанавливают ошибку если мьютекс уже создан...

так что скорее всего GetLastError вызывается при любом раскладе а не только когда апишка
возвращает FALSE

к тому же некоторые апишки при удачном раскладе устанавливают 0 как lasterror затирая любой
ошибочный код который был прежде
Re[3]: C++/CLI утечка USER объектов
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Тут еще один момент есть, и в этом часто делают ошибку (и в примере ТС тоже). GetLastError можно вызывать, только если BOOL функция вернула FALSE. В противном случае ее вообще вызывать нельзя.


а вот интересно, когда юзается implicit pinvoke как в посте выше, эвристика ставит флаг
setlasterror для апишек сама, то CLR вызывает GetLastError для сохранения результата для GetLastWin32Error в любом случае или только когда апишка вернула FALSE?

не думаю что только когда апишка вернула FALSE, потому что функции мьютекса возвращают хендл(истину) и
устанавливают ошибку если мьютекс уже создан...

так что скорее всего GetLastError вызывается при любом раскладе а не только когда апишка
возвращает FALSE

к тому же некоторые апишки при удачном раскладе устанавливают 0 как lasterror затирая любой
ошибочный код который был прежде