Смотрит на меня существует два общих проспекта, которые могут быть взяты: некоторый альтернативный способ считать CSV в сценарии SQL или преобразовать CSV заранее с любым из многочисленных способов, которыми можно сделать это (BCP, unix2dos, если это - бывший король вещи, можно, вероятно, даже использовать редактор кода для фиксации файла для Вас).
, Но у Вас должен будет быть дополнительный шаг!
, Если этот SQL запускается из программы, Вы могли бы хотеть преобразовать окончания строки в той программе. В этом случае и Вы решаете кодировать преобразование сами, вот то, что необходимо не упустить: 1. Окончание строки могло бы быть \n 2. или \r\n 3. или даже \r (Mac!) 4. хорошее горе, могло случиться так, что некоторые строки имеют \r\n и других \n, любая комбинация возможна, если Вы не управляете, куда CSV прибыл от
хорошо, хорошо. Возможность 4 неправдоподобна. Это происходит в электронном письме, но это - другая история.
Есть несколько вариантов:
Если вы можете каким-то образом заставить рассматриваемый поток вызывать GetCurrentThreadId и где-нибудь хранить его, вы можете прочитать результат.
Если рассматриваемый поток часто входит в аварийное состояние ожидания, вы можете отправить ему APC с QueueUserAPC ; обработчик APC может затем вызвать GetCurrentThreadId и передать результат обратно вызывающей стороне любым способом, который вам нравится.
Вы также можете сделать это с помощью недокументированных функций NT. Использование NtQueryInformationThread () в классе ThreadBasicInformation даст вам идентификатор потока в возвращаемой структуре . Пример можно найти в источнике вина . Однако я не уверен, в каких версиях окон это доступно - имейте в виду, что эти недокументированные функции могут измениться в любое время, поэтому лучше всего протестировать их на более старых версиях интересующих вас окон, и просто используйте GetThreadId (), где он доступен.
Обратите внимание, что эти недокументированные функции могут быть доступны только LoadLibrary () и GetProcAddress () в NTDLL; у них нет библиотеки импорта. Согласно MSDN , объявления для структур данных можно найти в Winternl.h
, но если нет, просто определите их сами на основе ссылок ntinternals выше.