Сообщение 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 затирая любой
ошибочный код который был прежде
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 затирая любой
ошибочный код который был прежде
PD>Тут еще один момент есть, и в этом часто делают ошибку (и в примере ТС тоже). GetLastError можно вызывать, только если BOOL функция вернула FALSE. В противном случае ее вообще вызывать нельзя.
а вот интересно, когда юзается implicit pinvoke как в посте выше, эвристика ставит флаг
setlasterror для апишек сама, то CLR вызывает GetLastError для сохранения результата для GetLastWin32Error в любом случае или только когда апишка вернула FALSE?
не думаю что только когда апишка вернула FALSE, потому что функции мьютекса возвращают хендл(истину) и
устанавливают ошибку если мьютекс уже создан...
так что скорее всего GetLastError вызывается при любом раскладе а не только когда апишка
возвращает FALSE
к тому же некоторые апишки при удачном раскладе устанавливают 0 как lasterror затирая любой
ошибочный код который был прежде