что значит, когда первым параметром этой функции передается TRUE или FALSE ? если со строкой еще более-менее понятно, то дальше - темный лес... исходники wine молчат, google выдал 50 ссылок, ни на одной ничего путнего не нашел, softice + кружка матэ тоже к просветелению путь не указали... или вообще есль какой-либо более "честный" способ реализовать GetModuleHandle ?
Случайно где-то нашел : Код (Text): NTSTATUS LdrGetDllHandle ( IN PWSTR DllPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *DllHandle ) /*++ Routine Description: This function locates the specified DLL and returns its handle. Arguments: DllPath - Supplies the search path to be used to locate the DLL. DllCharacteristics - Supplies an optional DLL characteristics flag, that if specified is used to match against the dll being loaded. DllName - Supplies the name of the DLL to load. DllHandle - Returns a handle to the loaded DLL. Return Value: TBD --*/
Supplies the search path to be used to locate the DLL. вот я и спрашиваю, что значит, когда этим параметров передают 0x00000000 и 0x00000001... как бы это на PWSTR мало похоже %) DllCharacteristics, кстати, за два дня так ни разу ненулевым и не увидел. просто третий день медетирую в попытках написать обертку GetModuleHandle и "нииии ччегонипонимаю" (с) колобки
при условии, что usName = {size, length, L"ntdll.dll"} и LdrGetDllHandle(0, 0, &usName, &hMod) и LdrGetDllHandle(1, 0, &usName, &hMod) и LdrGetDllHandle(L"C:\winnt\system32;", 0, &usName, &hMod) мне возвращают 0xC0000135 я в полной растерянности...
NtQuerySystemInformation почитал MSDN, побегал по гуглу... честно говоря, так и не понял, чем оно мне помочь может.
аха, вот все бы хорошо, но что-то я опять туплю, видимо... вопщем, не то он мне отдает... совсем не те модули, которые мне интересны... драйвера как-то не актуальны, хотелось бы .dll-и узреть... а ntdll.dll я, конечно, найду так, но мне и про другие либы узнать бы.... так что моя растерянность никуда не исчезла %(
и тем больше мои сомнения в том, что это то, что мне надо, возросли, когда увидел я ansi строки... а как-то для 2k/XP странно и непривычно такое в отладчике увидеть...
DarkK > Это похоже на какой-то флаг: Код (Text): // // sort of a hack, but done to speed up GetModuleHandle. kernel32 // now does a two pass call here to avoid computing // process dll path // if (LdrpCheckForLoadedDll( DllPath, &ActualDllNameStr, (BOOLEAN)(DllPath == (PWSTR)1 ? TRUE : FALSE), Wx86KnownDll, &LdrDataTableEntry ) ) { *DllHandle = (PVOID)LdrDataTableEntry->DllBase; LdrpGetModuleHandleCache = LdrDataTableEntry; st = STATUS_SUCCESS; } ___________________________________________________ BOOLEAN LdrpCheckForLoadedDll ( IN PWSTR DllPath OPTIONAL, IN PUNICODE_STRING DllName, IN BOOLEAN StaticLink, IN BOOLEAN Wx86KnownDll, OUT PLDR_DATA_TABLE_ENTRY *LdrDataTableEntry ) /*++ Routine Description: This function scans the loader data table looking to see if the specified DLL has already been mapped into the image. If the dll has been loaded, the address of its data table entry is returned. Arguments: DllPath - Supplies an optional search path used to locate the DLL. DllName - Supplies the name to search for. StaticLink - TRUE if performing a static link. Wx86KnownDll - TRUE, treat Importer as x86 LdrDataTableEntry - Returns the address of the loader data table entry that describes the first dll section that implements the dll. Return Value: TRUE- The dll is already loaded. The address of the data table entries that implement the dll, and the number of data table entries are returned. FALSE - The dll is not already mapped. --*/ volodya > Тащь начальник, я приобрёл книгу "Ядро Linux в комментариях"... с ней в комплекте, вместо изготовленного на заводе диска, мне дали самописную болванку, сославшись на утерю оригинала при транспортировке... :-(
сославшись на утерю оригинала при транспортировке ага, ну так бы сразу и сказал - это все объясняет. Никаких более вопросов не имею