Здравствуйте old Dutchman, Вы писали:
OD>Да дело не в CharLower. Мне нужны ВСЕ функции строковые !
OD>Задача — написать на С программу под NT размером в 10К максимум.
В ntdll.dll нет по понятным причинам printf, так что ее использование может обломиться, если это надо.
В остальном — тот же самый CRT, причем, это есть во всех NT-системах, а msvcrt только вроде с sp3 или sp4.
И нифига они не меняются и не пропадают, короче, решайте сами, и ничуть они не медленнее чем в msvcrt.
Но на самом деле, я их обычно не использую, если задача не стоит обойтись только ntdll.dll, а юзаю msvcrt, если у юзера стоит система без нее — значит он виноват только сам, что вовремя не проапгрейдился до нужного sp, и это значит, что еще бог знает какие глюки у него будут, рабочей NT-ей советую считать машину с sp5 и выше.
А, в принципе, если указать юзать именно msvcrt.lib, то уложиться в 10 кил абсолютно реально, у меня есть набор своих мелких утилиток, они порядка 3-х кил занимают, ну пять, но в них прямо линкуется msvcrt (собственно, для printf-а).
Например, прога, которая устанавливает любого владельца файла, она и файл открывает/закрывает, и привилегии себе нужные берет (RtlAdjustPrivilege), и LookupAccountName вызывает, и две Rtl-функции из ntdll.dll юзает (чтоб в SD SID воткнуть и чтоб создать его) и ZwSetSecurityObject для самой установки — короче, все в одном флаконе

— и пожалуйста, 3584 байта.
Прога, которая вырубает NT-систему, около 2 кил вообще получилась, естественно, и та и другая используют printf (без него они совсем крошечные бы были).
Так что успехов.
Здравствуйте Whisperer, Вы писали:
W>Тогда тебе прямая дорога к книге Свен Шрайбер "Недокументированные возможности Windows 2000" — к стати о возможности экспорта этих функций там написанно
W>#pragma comment(linker,"defaultlib:ntdll.lib")
W>к статит в этой книге есть специальный заголовочный фал для этого w2k_def.h давай мыло вышлю, если будушь юзать его в режиме user-mode ставь
W>#define _USER_MODE
W>
Вышли, пожалуйста, сюда

?
Здравствуйте old Dutchman, Вы писали:
Ушло!!!!
Слушай, а после чего это ты вдруг так заинтересовался NTDLL? Она ж
не грузитсяАвтор: old Dutchman
Дата: 28.10.02
OD>Привет !
OD>
OD>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых
OD>OD> typedef int (*pfntolower)(int);
OD> HMODULE hm = GetModuleHandle("ntdll.dll");
OD> pfntolower prc = (pfntolower)GetProcAddress(hm,"tolower");
OD> if( prc != NULL)
OD> {
OD> char ch = (char)prc('A');
OD> }
OD>
OD>Эта дрянь скорее всего будет медленно работать, но для тех задач, где необходимо отказаться от CRT и всякой дрянь вполне сгодится
Кстати, для того, чтобы была ntdll.lib, надо поставить NT DDK (2000) или натравить на ntdll.dll implib.
А книжечку Свена Шрайбера очень рекомендую. СтОящая вещь.
Успехов.
Здравствуйте Andrew S, Вы писали:
AS>Слушай, а после чего это ты вдруг так заинтересовался NTDLL? Она ж не грузитсяАвтор: old Dutchman
Дата: 28.10.02
Да посмотрел пример твой
Я перепутал -это LoadLibrary("hal.dll") выдает — Invalid Access to Memory location
Здравствуйте masta, Вы писали:
M>Здравствуйте Andrew S, Вы писали:
AS>>Кстати, для того, чтобы была ntdll.lib, надо поставить NT DDK (2000) или натравить на ntdll.dll implib.
AS>>А книжечку Свена Шрайбера очень рекомендую. СтОящая вещь.
AS>>Успехов.
M>А где её можно купить ???
В любом магазине — называется "Недокументированные возможности Windows 2000"
Здравствуйте Whisperer, Вы писали:
W>Здравствуйте old Dutchman, Вы писали:
OD>>Привет !
OD>>
OD>>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых
OD>>OD>> typedef int (*pfntolower)(int);
OD>> HMODULE hm = GetModuleHandle("ntdll.dll");
OD>> pfntolower prc = (pfntolower)GetProcAddress(hm,"tolower");
OD>> if( prc != NULL)
OD>> {
OD>> char ch = (char)prc('A');
OD>> }
OD>>
OD>>Эта дрянь скорее всего будет медленно работать, но для тех задач, где необходимо отказаться от CRT и всякой дрянь вполне сгодится
W>Тогда тебе прямая дорога к книге Свен Шрайбер "Недокументированные возможности Windows 2000" — к стати о возможности экспорта этих функций там написанно
W>#pragma comment(linker,"defaultlib:ntdll.lib")
W>к статит в этой книге есть специальный заголовочный фал для этого w2k_def.h давай мыло вышлю, если будушь юзать его в режиме user-mode ставь
W>#define _USER_MODE
W>
я бы тоже хотелбы (->
mailto:e.honeker@gmx.de), заранее спасибо
Конечно

Это ж бубль-гум.. в смысле — kernel-mode библиотека.
OD>Я перепутал -это LoadLibrary("hal.dll") выдает — Invalid Access to Memory location
Здравствуйте old Dutchman, Вы писали:
хъ
OD>Кул !!!
Ребята, это так давно было известо!
См.
здесь и
здесь.