169 похожих чатов

Народ, плиз хелп, всю голову сломал себе уже... разве может

быть так, что
GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" )
вернёт ненулевое значение при отсутствии SetThreadDescription() в системе? заявлена поддержка этой функции в Windows Server 2016+, проверяю на 2012 - типа какой-то адрес возвращается??

12 ответов

22 просмотра

хелп от вин32 апи нынче любит лапшу на уши вешать. у них даже функции из 3.11 поддерживаются только в десятке

Iluha-Companets Автор вопроса
Vga
хелп от вин32 апи нынче любит лапшу на уши вешать....

дык, проблема в том, что я получаю какой-то адрес, пытаюсь вызвать функцию и получаю AV

Vga
хелп от вин32 апи нынче любит лапшу на уши вешать....

Ну вот у меня этой функции нету в кернел32.длл. >tcc - -run #include <stdio.h> #include <windows.h> int main(){ printf("%08x\n", GetProcAddress(GetModuleHandle("kernel32.dll"), "SetThreadDescr iption")); return 0;} ^Z 00000000 работает как полагается по документации

посмотри каким-нить вьювером, есть ли такая функция в кернел32.длл

Vga
Ну вот у меня этой функции нету в кернел32.длл. >t...

https://stackoverflow.com/questions/62243162/how-to-access-setthreaddescription-in-windows-2016-server-version-1607

Iluha Companets
нет

а какое конкретно значение gpA возвращает?

так можно в самой dll-ке посмотреть экспорт

Iluha-Companets Автор вопроса
Vga
а какое конкретно значение gpA возвращает?

а вот хороший вопрос!!! сейчас сделал из дельфи вызвал - 0 ! а из DLL как буд-то даже если функция пытается загрузиться - сразу AV

Ты можешь в принципе не искать SetThreadDescription, а дергать напрямую. NtSetInformationThread даже в nt4 есть. А вот саму поддержку ThreadNameInformation можешь по результату проверять. STATUS_SUCCES если все норм, в противном случае будет STATUS_INVALID_INFO_CLASS pascal type NTSTATUS = Cardinal; ULONG = Cardinal; _UNICODE_STRING = record Length: WORD; MaximumLength: WORD; Buffer: PWideChar; end; UNICODE_STRING = _UNICODE_STRING; PTHREAD_NAME_INFORMATION = ^THREAD_NAME_INFORMATION; _THREAD_NAME_INFORMATION = record ThreadName: UNICODE_STRING; end; THREAD_NAME_INFORMATION = _THREAD_NAME_INFORMATION; function NtSetInformationThread(ThreadHandle: THandle; ThreadInformationClass: Integer; ThreadInformation: Pointer; ThreadInformationLength: ULONG): NTSTATUS; stdcall; external 'ntdll.dll'; function SetThreadDescription(hThread: THandle; lpThreadDescription: PWideChar): HRESULT; const ThreadNameInformation = 38; var NameInfo: THREAD_NAME_INFORMATION; begin NameInfo.ThreadName.Length := Length(lpThreadDescription) shl 1; NameInfo.ThreadName.MaximumLength := NameInfo.ThreadName.Length + 2; NameInfo.ThreadName.Buffer := lpThreadDescription; Result := NtSetInformationThread(hThread, ThreadNameInformation, @NameInfo, SizeOf(NameInfo)); end;

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта