GetThreadId в системах перед перспективой?

Смотрит на меня существует два общих проспекта, которые могут быть взяты: некоторый альтернативный способ считать CSV в сценарии SQL или преобразовать CSV заранее с любым из многочисленных способов, которыми можно сделать это (BCP, unix2dos, если это - бывший король вещи, можно, вероятно, даже использовать редактор кода для фиксации файла для Вас).

, Но у Вас должен будет быть дополнительный шаг!

, Если этот SQL запускается из программы, Вы могли бы хотеть преобразовать окончания строки в той программе. В этом случае и Вы решаете кодировать преобразование сами, вот то, что необходимо не упустить: 1. Окончание строки могло бы быть \n 2. или \r\n 3. или даже \r (Mac!) 4. хорошее горе, могло случиться так, что некоторые строки имеют \r\n и других \n, любая комбинация возможна, если Вы не управляете, куда CSV прибыл от

хорошо, хорошо. Возможность 4 неправдоподобна. Это происходит в электронном письме, но это - другая история.

7
задан sold 3 October 2009 в 22:03
поделиться

3 ответа

Есть несколько вариантов:

  • Когда вы вызываете CreateThread , вы получаете дескриптор обратно.
  • Вы можете вызвать GetCurrentThreadId , чтобы получить идентификатор текущего потока.
  • Вы можете использовать Thread32First / Thread32Next для перечисления потоков.
6
ответ дан 6 December 2019 в 21:16
поделиться

Если вы можете каким-то образом заставить рассматриваемый поток вызывать GetCurrentThreadId и где-нибудь хранить его, вы можете прочитать результат.

3
ответ дан 6 December 2019 в 21:16
поделиться

Если рассматриваемый поток часто входит в аварийное состояние ожидания, вы можете отправить ему APC с QueueUserAPC ; обработчик APC может затем вызвать GetCurrentThreadId и передать результат обратно вызывающей стороне любым способом, который вам нравится.

Вы также можете сделать это с помощью недокументированных функций NT. Использование NtQueryInformationThread () в классе ThreadBasicInformation даст вам идентификатор потока в возвращаемой структуре . Пример можно найти в источнике вина . Однако я не уверен, в каких версиях окон это доступно - имейте в виду, что эти недокументированные функции могут измениться в любое время, поэтому лучше всего протестировать их на более старых версиях интересующих вас окон, и просто используйте GetThreadId (), где он доступен.

Обратите внимание, что эти недокументированные функции могут быть доступны только LoadLibrary () и GetProcAddress () в NTDLL; у них нет библиотеки импорта. Согласно MSDN , объявления для структур данных можно найти в Winternl.h , но если нет, просто определите их сами на основе ссылок ntinternals выше.

3
ответ дан 6 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: