Introduce AddDllDirectory()

This commit is contained in:
Justine Tunney 2023-11-17 10:35:34 -08:00
parent 32b97f2d25
commit 2c9d2943d6
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
3 changed files with 23 additions and 1 deletions

View file

@ -37,6 +37,7 @@ void *GetProcAddress(int64_t hModule, const char *lpProcName);
int32_t FreeResource(int64_t hResData);
intptr_t LockResource(int64_t hResData);
int32_t FreeLibrary(int64_t hLibModule);
void *AddDllDirectory(const char16_t *NewDirectory);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */

View file

@ -0,0 +1,20 @@
#include "libc/nt/codegen.h"
.imp kernel32,__imp_AddDllDirectory,AddDllDirectory
.text.windows
.ftrace1
AddDllDirectory:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
mov %rdi,%rcx
sub $32,%rsp
call *__imp_AddDllDirectory(%rip)
leave
#elif defined(__aarch64__)
mov x0,#0
#endif
ret
.endfn AddDllDirectory,globl
.previous

View file

@ -45,6 +45,7 @@ imp '' WaitForMultipleObjects kernel32 4
imp '' WaitForSingleObject kernel32 2
imp 'AcquireSRWLockExclusive' AcquireSRWLockExclusive kernel32 1
imp 'AcquireSRWLockShared' AcquireSRWLockShared kernel32 1
imp 'AddDllDirectory' AddDllDirectory kernel32 1
imp 'AddVectoredContinueHandler' AddVectoredContinueHandler kernel32 2
imp 'AddVectoredExceptionHandler' AddVectoredExceptionHandler kernel32 2
imp 'AllocConsole' AllocConsole kernel32 0
@ -244,9 +245,9 @@ imp 'SetEndOfFile' SetEndOfFile kernel32 1
imp 'SetEnvironmentVariable' SetEnvironmentVariableW kernel32 2
imp 'SetErrorMode' SetErrorMode kernel32 1
imp 'SetEvent' SetEvent kernel32 1
imp 'SetFileInformationByHandle' SetFileInformationByHandle kernel32 4
imp 'SetFileAttributes' SetFileAttributesW kernel32 2
imp 'SetFileCompletionNotificationModes' SetFileCompletionNotificationModes kernel32 2
imp 'SetFileInformationByHandle' SetFileInformationByHandle kernel32 4
imp 'SetFileTime' SetFileTime kernel32 4
imp 'SetFileValidData' SetFileValidData kernel32 2
imp 'SetHandleCount' SetHandleCount kernel32 1