Я обнаружил, что функция ConvertStringSecurityDescriptorToSecurityDescriptor()
мешает моей программе закончить правильно. Даже если я звоню ExitProcess(0)
, моя программа остается открытой в фоновом режиме. Если я удалю эту функцию, программа закончится правильно.ConvertStringSecurityDescriptorToSecurityDescriptor() не позволяет моей программе закончить правильно
С помощью отладчика я обнаружил, что эта функция создает новый поток, который остается открытым после завершения этой функции.
Как заставить эту функцию правильно вести себя и закрыть все потоки, которые она открывает?
Мой код:
int main() {
PSECURITY_DESCRIPTOR d;
// program has 1 thread
ConvertStringSecurityDescriptorToSecurityDescriptorW(L".....", SDDL_REVISION_1, &d, NULL);
// program has 2 threads
return 0; // still running in background after this
}
Вы пытались вызвать 'LocalFree' на' d', чтобы освободить буфер? ([на MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa376401%28v=vs.85%29.aspx)) – Mgetz
Да, я пробовал это, это didn Помогите. Он просто освобождает буфер, но не закрывает поток. – Peter
И да, я забыл упомянуть, что эта ошибка возникает только тогда, когда я не использую CRT в своей программе (когда у меня есть пользовательская точка входа). – Peter