На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

LoadLibraryEx



The LoadLibraryEx function maps a specified executable module into the address space of the calling process. The executable module can be a .DLL or an .EXE file. The specified module may cause other modules to be mapped into the address space.

HINSTANCE LoadLibraryEx(

LPCTSTR lpLibFileName, // points to name of executable module
HANDLE hFile, // reserved, must be NULL
DWORD dwFlags // entry-point execution flag
);


Parameters

lpLibFileName

Points to a null-terminated string that names a Win32 executable module (either a .DLL or an .EXE file). The name specified is the filename of the executable module. This name is not related to the name stored in a library module itself, as specified by the LIBRARY keyword in the module-definition (.DEF) file.

If the string specifies a path, but the file does not exist in the specified directory, the function fails.
If the string does not specify a path, and the filename extension is omitted, the function appends the default library extension .DLL to the filename. However, the filename string can include a trailing point character (.) to indicate that the module name has no extension.
If the string does not specify a path, the function uses a standard search strategy to find the file. See the Remarks for more information.

If mapping the specified module into the address space causes the operating system to map in other, associated executable modules, the function can use either the standard search strategy or an alternate search strategy to find those modules. See the Remarks for more information.
Once the function obtains a fully qualified path to a library module file, the path is compared (in a case-independent manner) to the full paths of library modules that are currently loaded into the calling process. That set of libraries includes those that were loaded when the process was starting up, as well as those previously loaded by calls to LoadLibrary or LoadLibraryEx but not yet unloaded by calls to FreeLibrary. If the path matches the path of an already loaded module, the function just increments the reference count for the module, and returns the module handle for that library.

hFile

This parameter is reserved for future use. It must be NULL.

dwFlags

Specifies the action to take when loading the module. This parameter can be one of the following values:

Flag Meaning
DONT_RESOLVE_DLL_REFERENCES
Windows NT only: If this value is given, and the executable module is a dynamic-link library (DLL), the operating system does not call the DllEntryPoint function for process and thread initialization and termination. Also, the system does not load additional executable modules that are referenced by the specified module.If this value is not given, and the executable module is a DLL, the operating system calls the DllEntryPoint function for process and thread initialization and termination. The system loads additional executable modules that are referenced by the specified module. The behavior of the function is then identical to that of LoadLibrary in this regard.
LOAD_LIBRARY_AS_DATAFILE
If this value is given, the function does a simple mapping of the file into the address space. Nothing is done relative to executing or preparing to execute the code in the mapped file. The function loads the module as if it were a data file. You can use the module handle that the function returns in this case with the Win32 functions that operate on resources. Use this flag when you want to load a DLL in order to extract messages or resources from it, and have no intention of executing its code.If this value is not given, the function maps the file into the address space in the manner that is normal for an executable module. The behavior of the function is then identical to that of LoadLibrary in this regard.
LOAD_WITH_ALTERED_SEARCH_PATH
If this value is given, and lpLibFileName specifies a path, the function uses the alternate file search strategy discussed in the Remarks section following to find associated executable modules that the specified module causes to be loaded.If this value is not given, or if lpLibFileName does not specify a path, the function uses the standard search strategy discussed in the Remarks section following to find associated executable modules that the specified module causes to be loaded. The behavior of the function is then identical to that of LoadLibrary in this regard.


Return Values

If the function succeeds, the return value is a handle to the mapped executable module.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

Note that the DONT_RESOLVE_DLL_REFERENCES flag is only implemented on the Windows NT platform. It is not implemented on the Windows 95 platform.
The calling process can use the handle returned by this function to identify the module in calls to the GetProcAddress, FindResource, and LoadResource functions.
The LoadLibraryEx function is very similar to the LoadLibrary function. The differences consist of a set of optional behaviors that LoadLibraryEx provides. First, LoadLibraryEx can map a DLL module without calling the DllEntryPoint function of the DLL. Second, LoadLibraryEx can use either of two file search strategies to find executable modules that are associated with the specified module. Third, LoadLibraryEx can load a module in a way that is optimized for the case where the module will never be executed, loading the module as if it were a data file. You select these optional behaviors by setting the dwFlags parameter; if dwFlags is zero, LoadLibraryEx behaves identically to LoadLibrary.

If no path is specified, the LoadLibraryEx function uses the same standard file search strategy that LoadLibrary, SearchPath, and OpenFile use to find the executable module and any associated executable modules that it causes to be loaded. This standard strategy searches for a file in the following sequence:

1. The directory from which the application loaded.
2. The current directory.
3. Windows 95: The Windows system directory. Use the GetSystemDirectory function to get the path of this directory.

Windows NT: The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is SYSTEM32.

4. Windows NT: The 16-bit Windows system directory. There is no Win32 function that obtains the path of this directory, but it is searched. The name of this directory is SYSTEM.
5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
6. The directories that are listed in the PATH environment variable.



If a path is specified, and the dwFlags parameter is set to LOAD_WITH_ALTERED_SEARCH_PATH, the LoadLibraryEx function uses an alternate file search strategy to find any executable modules that the specified module causes to be loaded. This alternate strategy searches for a file in the following sequence:

1. The directory specified by the lpLibFileName path. In other words, the directory that the specified executable module is in.
2. The current directory.
3. Windows 95: The Windows system directory. Use the GetSystemDirectory function to get the path of this directory.

Windows NT: The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is SYSTEM32.

4. Windows NT: The 16-bit Windows system directory. There is no Win32 function that obtains the path of this directory, but it is searched. The name of this directory is SYSTEM.
5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
6. The directories that are listed in the PATH environment variable.



Note that the standard file search strategy and the alternate search strategy differ in just one way: the standard strategy starts its search in the calling application's directory, and the alternate strategy starts its search in the directory of the executable module that LoadLibraryEx is loading.
If you specify the alternate search strategy, its behavior continues until all associated executable modules have been located. Once the system starts processing DLL initialization routines, the system reverts to the standard search strategy.

See Also

DllEntryPoint, FindResource, FreeLibrary, GetProcAddress, GetSystemDirectory, GetWindowsDirectory, LoadLibrary, LoadResource, OpenFile, SearchPath


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

LoadLibraryEx



Функция LoadLibraryEx отображает определенный выполняемый модуль в пространство адреса вызова процесса. Выполняемый модуль может быть .DLL или файлом .EXE. Определенный модуль может вызвать другие модули, которые нужно отображаться в пространство адреса.

HINSTANCE LoadLibraryEx(

LPCTSTR lpLibFileName, // ТОЧКИ на имя выполняемой модульной РУЧКИ hFile, // зарезервированное, должны быть вход-точка флага выполнения NULL DWORD dwFlags //
);


Параметры

lpLibFileName

Точки на недействительный расторгнутую строку, которые называют выполняемый модуль Win32 (или .DLL или файл .EXE). Определенное имя является filename выполняемого модуля. Это зовут не имело отношение к имени сохраненному в библиотечном модуле себя, как определено ключевым словом БИБЛИОТЕКИ в модульном-определении (.ОПРЕДЕЛЕННЫЙ) файл.

Если строка определяет путь, но файл не существует в определенном директории, функция терпит неудачу.
Если строка не определяет путь, и расширение filename опущено, функция добавляет встроенное библиотечное расширение .DLL в filename. Тем не менее, строка filename может включить конечный символ точки (.), чтобы указывать, что модульное имя не имеет расширение.
Если строка не определяет путь, функция использует стандартную стратегию поиска, чтобы находить файл. Смотри Замечания более подробно.

При распределении определенного модуля в космические причины адреса операционная система, чтобы отображаться в других, связанных выполняемых модулях, функция может использовать или стандартная стратегия поиска или альтернативная стратегия поиска, чтобы находить те модули. Смотри Замечания более подробно.
Как только функция получит полностью пригодный путь в библиотечный модульный файл, путь сравнен (в случай-независимом способе) в полные пути библиотечных модулей, которые к настоящему времени загружены на вызов процесса. Это установленное библиотек включает те которые были загружены когда процесс запускал, а также те прежде загруженные вызовами на LoadLibrary или LoadLibraryEx но еще не разгруженные вызовами на FreeLibrary. Если путь соответствует пути уже загруженного модуля, функциональные точные приращения ссылка имеет значение модуль и возвращает модульную ручку для этой библиотеки.

hFile

Этот параметр зарезервирован для будущего использования. Это по-видимому НЕДЕЙСТВИТЕЛЬНО.

dwFlags

Определяет действие, чтобы требоваться при погрузке модуля. Этот параметр может быть одним из следующего величин:

Значение Флага
DONT_RESOLVE_DLL_REFERENCES
Окно NT только: Если эта величина дана, и выполняемый модуль является динамической связью библиотеки (DLL), операционная система не призывает функцию DllEntryPoint к процессу и заправляет инициализацию и завершение. Также, система не загружает дополнительные выполняемые модули на которые ссылались определенным модулем.Если эта величина не дана, и выполняемый модуль является DLL, вызовами операционной системы функция DllEntryPoint для процесса и инициализации резьбы и завершения. Система загружает дополнительные выполняемые модули на которые ссылались определенным модулем. Поведение функции - затем идентичный тому же самому LoadLibrary в этом отношении.
LOAD_LIBRARY_AS_DATAFILE
Если эта величина дана, функция делает простым распределением файла в пространство адреса. Ничто не сделан относительно выполняющего или подготавливая, чтобы выполнять код в отображенном файле. Функция загружает модуль как будто она была файлом данных. Вы можете использовать модульную ручку, что функция возвращается в этот случай с функциями Win32, что действовать в ресурсах. Используйте этот флаг когда Вы хотите загрузить DLL для того, чтобы извлекать сообщения или ресурсы из этого, и не иметь стремление выполнять свой код.Если эта величина не дана, функция отображает файл в пространство адреса способом, который нормальный для выполняемого модуля. Поведение функции - затем идентичный тому же самому LoadLibrary в этом отношении.
LOAD_WITH_ALTERED_SEARCH_PATH
Если эта величина дана, и lpLibFileName определяет путь, функция использует альтернативную файловую стратегию поиска обсужденную в секции Замечаний, следующей за, чтобы находить связанные выполняемые модули, что определенный модуль заставляет быть загруженн.Если эта величина не дана, или если lpLibFileName не определяет путь, функция использует стандартную стратегию поиска обсужденную в секции Замечаний, следующей за, чтобы находить связанные выполняемые модули, что определенный модуль заставляет быть загруженн. Поведение функции - затем идентичный тому же самому LoadLibrary в этом отношении.


Обратные Величины

Если функция добивается успеха, обратная величина является ручкой в отображенный выполняемый модуль.
Если функция терпит неудачу, обратная величина НЕДЕЙСТВИТЕЛЬНА. Для того, чтобы расширять информацию ошибки, вызовите GetLastError.

Замечания

Отметьте, что флаг DONT_RESOLVE_DLL_REFERENCES только осуществлен на платформе Windows NT. Это не осуществлено на платформе Windows 95.
Разговор процесса может использовать ручку возвращанную этой функцией, чтобы идентифицировать модуль на вызовах в GetProcAddress, FindResource, и функции LoadResource.
Функция LoadLibraryEx очень подобная функции LoadLibrary. Различия состоят из установки дополнительного поведения, что LoadLibraryEx обеспечивается. Сначала, LoadLibraryEx может отобразить модуль DLL не вызывая функцию DllEntryPoint DLL. Во-вторых, LoadLibraryEx может использовать любая из двух файловых стратегий поиска, чтобы находить выполняемые модули, которые связаны определенным модулем. Третий, LoadLibraryEx может загрузить модуль в некотором отношении, что оптимизирован для случая где модуль никогда не будет выполнен, загружая модуль как будто это было файлом данных. Вы выбираете это дополнительное поведение устанавливая параметр dwFlags; если dwFlags - нуль, LoadLibraryEx ведется себя идентично на LoadLibrary.

Если никакой путь не определен, функция LoadLibraryEx использует ту же стандартную файловую стратегию поиска, что LoadLibrary, SearchPath, и использование OpenFile, чтобы находить выполняемые модульные и любые связанные выполняемые модули, которые он заставляет загружен. Эта стандартная стратегия ищет файл в следующей последовательности:

1. Директорий из которого приложение загружалось.
2. Текущий директорий.
3. Windows 95: системный директорий Windows. Используйте функцию GetSystemDirectory, чтобы получать путь этого директория.

Windows NT: системный директорий 32- бита Windows. Используйте функцию GetSystemDirectory, чтобы получать путь этого директория. Имя этого директория - SYSTEM32.

4. Windows NT: системный директорий 16- бита Windows. Нет функции Win32, что получает путь этого директория, но поискано. Имя этого директория СИСТЕМНОЕ.
5. Директорий Windows. Используйте функцию GetWindowsDirectory, чтобы получать путь этого директория.
6. Директории, которые указаны в переменной среды ПУТИ.



Если путь определен, и параметр dwFlags установлен на LOAD_WITH_ALTERED_SEARCH_PATH, функция LoadLibraryEx использует альтернативную файловую стратегию поиска, чтобы находить любые выполняемые модули, что определенный модуль заставляет быть загруженн. Эта альтернативная стратегия ищет файл в следующей последовательности:

1. Директорий определялся путем lpLibFileName. Другими словами, директорий, что определенный выполняемый модуль - в.
2. Текущий директорий.
3. Windows 95: системный директорий Windows. Используйте функцию GetSystemDirectory, чтобы получать путь этого директория.

Windows NT: системный директорий 32- бита Windows. Используйте функцию GetSystemDirectory, чтобы получать путь этого директория. Имя этого директория - SYSTEM32.

4. Windows NT: системный директорий 16- бита Windows. Нет функции Win32, что получает путь этого директория, но поискано. Имя этого директория СИСТЕМНОЕ.
5. Директорий Windows. Используйте функцию GetWindowsDirectory, чтобы получать путь этого директория.
6. Директории, которые указаны в переменной среды ПУТИ.



Отметьте, что стандартная файловая стратегия поиска и альтернативная стратегия поиска отличается в точном одном пути: стандартная стратегия начинает свой поиск в прикладном директории разговора, и альтернативная стратегия начинает свой поиск в директории выполняемого модуля, что LoadLibraryEx загружается.
Если Вы определяете альтернативную стратегию поиска, поведение остается до все связавшее выполняемые модули расположен. Как только система начнет обрабатывать программы инициализации DLL, система возвращается в стандартную стратегию поиска.

Смотри Также

DllEntryPoint, FindResource, FreeLibrary, GetProcAddress, GetSystemDirectory, GetWindowsDirectory, LoadLibrary, LoadResource, OpenFile, SearchPath


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz