advapi32.odin 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package sys_windows
  2. foreign import advapi32 "system:Advapi32.lib"
  3. @(default_calling_convention="stdcall")
  4. foreign advapi32 {
  5. @(link_name = "SystemFunction036")
  6. RtlGenRandom :: proc(RandomBuffer: ^u8, RandomBufferLength: ULONG) -> BOOLEAN ---
  7. OpenProcessToken :: proc(ProcessHandle: HANDLE,
  8. DesiredAccess: DWORD,
  9. TokenHandle: ^HANDLE) -> BOOL ---
  10. }
  11. // Necessary to create a token to impersonate a user with for CreateProcessAsUser
  12. @(default_calling_convention="stdcall")
  13. foreign advapi32 {
  14. LogonUserW :: proc(
  15. lpszUsername: LPCWSTR,
  16. lpszDomain: LPCWSTR,
  17. lpszPassword: LPCWSTR,
  18. dwLogonType: Logon32_Type,
  19. dwLogonProvider: Logon32_Provider,
  20. phToken: ^HANDLE,
  21. ) -> BOOL ---
  22. // https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-lookupaccountnamew
  23. // To look up the SID to use with DeleteProfileW.
  24. LookupAccountNameW :: proc(
  25. lpSystemName: wstring,
  26. lpAccountName: wstring,
  27. Sid: ^SID,
  28. cbSid: ^DWORD,
  29. ReferencedDomainName: wstring,
  30. cchReferencedDomainName: ^DWORD,
  31. peUse: ^SID_TYPE,
  32. ) -> BOOL ---
  33. CreateProcessWithLogonW :: proc(
  34. lpUsername: wstring,
  35. lpDomain: wstring,
  36. lpPassword: wstring,
  37. dwLogonFlags: DWORD,
  38. lpApplicationName: wstring,
  39. lpCommandLine: wstring,
  40. dwCreationFlags: DWORD,
  41. lpEnvironment: LPVOID,
  42. lpCurrentDirectory: wstring,
  43. lpStartupInfo: LPSTARTUPINFO,
  44. lpProcessInformation: LPPROCESS_INFORMATION,
  45. ) -> BOOL ---
  46. // https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw
  47. CreateProcessAsUserW :: proc(
  48. hToken: HANDLE,
  49. lpApplicationName: wstring,
  50. lpCommandLine: wstring,
  51. lpProcessAttributes: LPSECURITY_ATTRIBUTES,
  52. lpThreadAttributes: LPSECURITY_ATTRIBUTES,
  53. bInheritHandles: BOOL,
  54. dwCreationFlags: DWORD,
  55. lpEnvironment: LPVOID,
  56. lpCurrentDirectory: wstring,
  57. lpStartupInfo: LPSTARTUPINFO,
  58. lpProcessInformation: LPPROCESS_INFORMATION,
  59. ) -> BOOL ---;
  60. }