31 if (phModule) *phModule = 0;
34 if (
dwFlags & ~(GET_MODULE_HANDLE_EX_FLAG_PIN |
35 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT |
36 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) ||
37 ((
dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) &&
38 (
dwFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT)) ||
39 (!lpwModuleName && (
dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS))
113 static const CHAR TwainDllName[] =
"twain_32.dll";
119 if (lpLibFileName && !
_strcmpi(lpLibFileName, TwainDllName))
127 if ((
Len != 0) && (
Len < (
MAX_PATH -
sizeof(TwainDllName) -
sizeof(
'\\'))))
130 PathBuffer[
Len] =
'\\';
131 strcpy(&PathBuffer[
Len + 1], TwainDllName);
218 sizeof(FilenameW) /
sizeof(FilenameW[0]),
296 ULONG DllCharacteristics = 0;
386 DPRINT1(
"LoadLibraryExW(%ls) failing with status %lx\n", lpLibFileName,
Status);
413 ProcNamePtr = &ProcedureName;
438 if (fnExp == hMapped)
441 if (
HIWORD(lpProcName) != 0)
577 LengthToCopy =
Length + 1;
579 LengthToCopy =
nSize;
737 if (phModule) *phModule =
NULL;
742 if (!(dwPublicFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS))
780 if (!(dwPublicFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT))
800 if (phModule) *phModule =
hModule;
849 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
914 if (
dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS)
928 if (!lpModuleNameW)
return FALSE;
993 CommandLine[
Length] =
' ';
1007 &ProcessInformation);
1120 DPRINT1(
"BaseQueryModuleData called: %s %s %p %p %p\n",
1136 DPRINT(
"Post-init called\n");
#define LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS
struct _STARTUPINFOA STARTUPINFOA
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
enum _RTL_PATH_TYPE RTL_PATH_TYPE
NTSTATUS NTAPI LdrGetDllHandleEx(IN ULONG Flags, IN PWSTR DllPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *DllHandle OPTIONAL)
PUNICODE_STRING WINAPI Basep8BitStringToStaticUnicodeString(IN LPCSTR String)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryW(LPCWSTR lpLibFileName)
NTSTATUS NTAPI NtUnmapViewOfSection(IN HANDLE ProcessHandle, IN PVOID BaseAddress)
NTSTATUS NTAPI LdrGetDllHandle(IN PWSTR DllPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *DllHandle)
_In_ ULONG _In_ ULONG _In_ ULONG Length
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
PPEB ProcessEnvironmentBlock
#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_ERROR
BOOLEAN WINAPI BasepGetModuleHandleExW(BOOLEAN NoLock, DWORD dwPublicFlags, LPCWSTR lpwModuleName, HMODULE *phModule)
NTSTATUS NTAPI LdrUnlockLoaderLock(IN ULONG Flags, IN ULONG Cookie OPTIONAL)
LIST_ENTRY InLoadOrderModuleList
PRTL_CONVERT_STRINGA BasepUnicodeStringTo8BitString
#define STATUS_INVALID_PARAMETER
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
NTSTATUS NTAPI LdrAddRefDll(IN ULONG Flags, IN PVOID BaseAddress)
#define LDR_IS_DATAFILE(handle)
*nSize LPSTR _Inout_ LPDWORD nSize
BOOL WINAPI UTRegister(HMODULE hModule, LPSTR lpsz16BITDLL, LPSTR lpszInitName, LPSTR lpszProcName, FARPROC *ppfn32Thunk, FARPROC pfnUT32CallBack, LPVOID lpBuff)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSTATUS NTAPI LdrLockLoaderLock(IN ULONG Flags, OUT PULONG Disposition OPTIONAL, OUT PULONG_PTR Cookie OPTIONAL)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
#define LOAD_WITH_ALTERED_SEARCH_PATH
#define VER_SUITE_TERMINAL
PVOID NTAPI RtlPcToFileHeader(IN PVOID PcValue, PVOID *BaseOfImage)
NTSTATUS WINAPI BasepInitializeTermsrvFpns(VOID)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
#define RtlMoveMemory(Destination, Source, Length)
VOID WINAPI UTUnRegister(HMODULE hModule)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
VOID WINAPI FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode)
static IN ULONG IN PWSTR OUT PCWSTR OUT PBOOLEAN OUT PATH_TYPE_AND_UNKNOWN * PathType
FARPROC WINAPI DelayLoadFailureHook(LPCSTR pszDllName, LPCSTR pszProcName)
return STATUS_NOT_IMPLEMENTED
DWORD WINAPI SearchPathA(IN LPCSTR lpPath OPTIONAL, IN LPCSTR lpFileName, IN LPCSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart OPTIONAL)
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
HMODULE WINAPI GetModuleHandleForUnicodeString(PUNICODE_STRING ModuleName)
NTSTATUS NTAPI NtMapViewOfSection(IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect)
NTSTATUS NTAPI LdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress)
#define ERROR_BAD_EXE_FORMAT
#define STATUS_INVALID_PARAMETER_2
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
WaitForInputIdleType UserWaitForInputIdleRoutine
static const OBJECT_ATTRIBUTES const LARGE_INTEGER ULONG
VOID WINAPI ExitThread(IN DWORD uExitCode)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
#define STARTF_USESHOWWINDOW
#define ERROR_FILE_NOT_FOUND
PLDR_DATA_TABLE_ENTRY BasepExeLdrEntry
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define NtCurrentProcess()
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
#define DECLSPEC_HOTPATCH
BOOLEAN NTAPI LdrUnloadAlternateResourceModule(IN PVOID BaseAddress)
struct _LIST_ENTRY * Flink
#define STATUS_INVALID_IMAGE_FORMAT
#define NT_SUCCESS(StatCode)
#define CreateFileMappingW(a, b, c, d, e, f)
#define EXCEPTION_EXECUTE_HANDLER
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
_In_opt_ PVOID _Out_ PLARGE_INTEGER Cookie
#define IMAGE_FILE_EXECUTABLE_IMAGE
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
FARPROC WINAPI GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
BOOL WINAPI BaseQueryModuleData(IN LPSTR ModuleName, IN LPSTR Unknown, IN PVOID Unknown2, IN PVOID Unknown3, IN PVOID Unknown4)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define DONT_RESOLVE_DLL_REFERENCES
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
BOOL WINAPI GetModuleHandleExA(IN DWORD dwFlags, IN LPCSTR lpModuleName OPTIONAL, OUT HMODULE *phModule)
#define FILE_ATTRIBUTE_NORMAL
#define FILE_SHARE_DELETE
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define STATUS_INVALID_PARAMETER_1
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
NTSTATUS NTAPI DECLSPEC_HOTPATCH LdrLoadDll(IN PWSTR SearchPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *BaseAddress)
static NTSTATUS BasepLoadLibraryAsDatafile(PWSTR Path, LPCWSTR Name, HMODULE *hModule)
NTSTATUS NTAPI LdrEnumerateLoadedModules(IN BOOLEAN ReservedFlag, IN PLDR_ENUM_CALLBACK EnumProc, IN PVOID Context)
VOID NTAPI BasepLocateExeLdrEntry(IN PLDR_DATA_TABLE_ENTRY Entry, IN PVOID Context, OUT BOOLEAN *StopEnumeration)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
NTSTATUS WINAPI BaseProcessInitPostImport(VOID)
NTSTATUS NTAPI LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress)
#define LOAD_LIBRARY_AS_DATAFILE
#define STATUS_ORDINAL_NOT_FOUND
DWORD WINAPI BasepGetModuleHandleExParameterValidation(DWORD dwFlags, LPCWSTR lpwModuleName, HMODULE *phModule)
LPWSTR WINAPI BaseComputeProcessDllPath(IN LPWSTR FullPath, IN PVOID Environment)
NTSTATUS NTAPI LdrUnloadDll(IN PVOID BaseAddress)
BOOL WINAPI GetModuleHandleExW(IN DWORD dwFlags, IN LPCWSTR lpwModuleName OPTIONAL, OUT HMODULE *phModule)
PRTL_UNICODE_STRING_BUFFER Path
BOOL WINAPI DECLSPEC_HOTPATCH FreeLibrary(HINSTANCE hLibModule)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN CreateFile
#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_SUCCESS
#define STATUS_DLL_NOT_FOUND
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
static const char const char * DllPath
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
UNICODE_STRING FullDllName
DWORD WINAPI LoadModule(LPCSTR lpModuleName, LPVOID lpParameterBlock)
#define STATUS_ENTRYPOINT_NOT_FOUND
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
#define LDR_ADDREF_DLL_PIN
char * strcpy(char *DstString, const char *SrcString)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
#define ERROR_PATH_NOT_FOUND
#define _SEH2_EXCEPT(...)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
#define _SEH2_GetExceptionCode()
#define _SEH2_YIELD(__stmt)
_Check_return_ _CRTIMP int __cdecl _strcmpi(_In_z_ const char *_Str1, _In_z_ const char *_Str2)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
LIST_ENTRY * ModuleListHead
base of all file and directory entries
PVOID WINAPI BasepMapModuleHandle(HMODULE hModule, BOOLEAN AsDataFile)
NTSYSAPI RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U(_In_ PCWSTR Path)
#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_CONTINUE
PULONG MinorVersion OPTIONAL