mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
windows: Add psapi API
Export both the "old-style" definitions from psapi and the "new-style" ones from kernel32.
This commit is contained in:
parent
ab46713fa6
commit
9ffc13b6c4
34
lib/libc/mingw/lib-common/psapi.def
Normal file
34
lib/libc/mingw/lib-common/psapi.def
Normal file
@ -0,0 +1,34 @@
|
||||
;
|
||||
; Definition file of PSAPI.DLL
|
||||
; Automatic generated by gendef
|
||||
; written by Kai Tietz 2008
|
||||
;
|
||||
LIBRARY "PSAPI.DLL"
|
||||
EXPORTS
|
||||
EmptyWorkingSet
|
||||
EnumDeviceDrivers
|
||||
EnumPageFilesA
|
||||
EnumPageFilesW
|
||||
EnumProcessModules
|
||||
EnumProcessModulesEx
|
||||
EnumProcesses
|
||||
GetDeviceDriverBaseNameA
|
||||
GetDeviceDriverBaseNameW
|
||||
GetDeviceDriverFileNameA
|
||||
GetDeviceDriverFileNameW
|
||||
GetMappedFileNameA
|
||||
GetMappedFileNameW
|
||||
GetModuleBaseNameA
|
||||
GetModuleBaseNameW
|
||||
GetModuleFileNameExA
|
||||
GetModuleFileNameExW
|
||||
GetModuleInformation
|
||||
GetPerformanceInfo
|
||||
GetProcessImageFileNameA
|
||||
GetProcessImageFileNameW
|
||||
GetProcessMemoryInfo
|
||||
GetWsChanges
|
||||
GetWsChangesEx
|
||||
InitializeProcessForWsWatch
|
||||
QueryWorkingSet
|
||||
QueryWorkingSetEx
|
||||
34
lib/libc/mingw/lib32/psapi.def
Normal file
34
lib/libc/mingw/lib32/psapi.def
Normal file
@ -0,0 +1,34 @@
|
||||
;
|
||||
; Definition file of PSAPI.DLL
|
||||
; Automatic generated by gendef
|
||||
; written by Kai Tietz 2008
|
||||
;
|
||||
LIBRARY "PSAPI.DLL"
|
||||
EXPORTS
|
||||
EmptyWorkingSet@4
|
||||
EnumDeviceDrivers@12
|
||||
EnumPageFilesA@8
|
||||
EnumPageFilesW@8
|
||||
EnumProcessModules@16
|
||||
EnumProcessModulesEx@20
|
||||
EnumProcesses@12
|
||||
GetDeviceDriverBaseNameA@12
|
||||
GetDeviceDriverBaseNameW@12
|
||||
GetDeviceDriverFileNameA@12
|
||||
GetDeviceDriverFileNameW@12
|
||||
GetMappedFileNameA@16
|
||||
GetMappedFileNameW@16
|
||||
GetModuleBaseNameA@16
|
||||
GetModuleBaseNameW@16
|
||||
GetModuleFileNameExA@16
|
||||
GetModuleFileNameExW@16
|
||||
GetModuleInformation@16
|
||||
GetPerformanceInfo@8
|
||||
GetProcessImageFileNameA@12
|
||||
GetProcessImageFileNameW@12
|
||||
GetProcessMemoryInfo@12
|
||||
GetWsChanges@12
|
||||
GetWsChangesEx@12
|
||||
InitializeProcessForWsWatch@4
|
||||
QueryWorkingSet@12
|
||||
QueryWorkingSetEx@12
|
||||
@ -15,6 +15,7 @@ pub const advapi32 = @import("windows/advapi32.zig");
|
||||
pub const kernel32 = @import("windows/kernel32.zig");
|
||||
pub const ntdll = @import("windows/ntdll.zig");
|
||||
pub const ole32 = @import("windows/ole32.zig");
|
||||
pub const psapi = @import("windows/psapi.zig");
|
||||
pub const shell32 = @import("windows/shell32.zig");
|
||||
pub const ws2_32 = @import("windows/ws2_32.zig");
|
||||
|
||||
|
||||
@ -929,9 +929,12 @@ pub usingnamespace switch (builtin.arch) {
|
||||
SegSs: DWORD,
|
||||
ExtendedRegisters: [512]BYTE,
|
||||
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {bp: usize, ip: usize} {
|
||||
return .{.bp = ctx.Ebp, .ip = ctx.Eip};
|
||||
}
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {
|
||||
bp: usize,
|
||||
ip: usize,
|
||||
} {
|
||||
return .{ .bp = ctx.Ebp, .ip = ctx.Eip };
|
||||
}
|
||||
};
|
||||
|
||||
pub const PCONTEXT = *CONTEXT;
|
||||
@ -1032,8 +1035,11 @@ pub usingnamespace switch (builtin.arch) {
|
||||
LastExceptionToRip: DWORD64,
|
||||
LastExceptionFromRip: DWORD64,
|
||||
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {bp: usize, ip: usize} {
|
||||
return .{.bp = ctx.Rbp, .ip = ctx.Rip};
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {
|
||||
bp: usize,
|
||||
ip: usize,
|
||||
} {
|
||||
return .{ .bp = ctx.Rbp, .ip = ctx.Rip };
|
||||
}
|
||||
};
|
||||
|
||||
@ -1100,8 +1106,11 @@ pub usingnamespace switch (builtin.arch) {
|
||||
Wcr: [2]DWORD,
|
||||
Wvr: [2]DWORD64,
|
||||
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {bp: usize, ip: usize} {
|
||||
return .{.bp = ctx.DUMMYUNIONNAME.DUMMYSTRUCTNAME.Fp, .ip = ctx.Pc};
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct {
|
||||
bp: usize,
|
||||
ip: usize,
|
||||
} {
|
||||
return .{ .bp = ctx.DUMMYUNIONNAME.DUMMYSTRUCTNAME.Fp, .ip = ctx.Pc };
|
||||
}
|
||||
};
|
||||
|
||||
@ -1237,3 +1246,77 @@ pub const CURDIR = extern struct {
|
||||
};
|
||||
|
||||
pub const DUPLICATE_SAME_ACCESS = 2;
|
||||
|
||||
pub const MODULEINFO = extern struct {
|
||||
lpBaseOfDll: LPVOID,
|
||||
SizeOfImage: DWORD,
|
||||
EntryPoint: LPVOID,
|
||||
};
|
||||
pub const LPMODULEINFO = [*c]MODULEINFO;
|
||||
pub const PSAPI_WS_WATCH_INFORMATION = extern struct {
|
||||
FaultingPc: LPVOID,
|
||||
FaultingVa: LPVOID,
|
||||
};
|
||||
pub const PPSAPI_WS_WATCH_INFORMATION = [*c]PSAPI_WS_WATCH_INFORMATION;
|
||||
pub const PROCESS_MEMORY_COUNTERS = extern struct {
|
||||
cb: DWORD,
|
||||
PageFaultCount: DWORD,
|
||||
PeakWorkingSetSize: SIZE_T,
|
||||
WorkingSetSize: SIZE_T,
|
||||
QuotaPeakPagedPoolUsage: SIZE_T,
|
||||
QuotaPagedPoolUsage: SIZE_T,
|
||||
QuotaPeakNonPagedPoolUsage: SIZE_T,
|
||||
QuotaNonPagedPoolUsage: SIZE_T,
|
||||
PagefileUsage: SIZE_T,
|
||||
PeakPagefileUsage: SIZE_T,
|
||||
};
|
||||
pub const PPROCESS_MEMORY_COUNTERS = [*c]PROCESS_MEMORY_COUNTERS;
|
||||
pub const PROCESS_MEMORY_COUNTERS_EX = extern struct {
|
||||
cb: DWORD,
|
||||
PageFaultCount: DWORD,
|
||||
PeakWorkingSetSize: SIZE_T,
|
||||
WorkingSetSize: SIZE_T,
|
||||
QuotaPeakPagedPoolUsage: SIZE_T,
|
||||
QuotaPagedPoolUsage: SIZE_T,
|
||||
QuotaPeakNonPagedPoolUsage: SIZE_T,
|
||||
QuotaNonPagedPoolUsage: SIZE_T,
|
||||
PagefileUsage: SIZE_T,
|
||||
PeakPagefileUsage: SIZE_T,
|
||||
PrivateUsage: SIZE_T,
|
||||
};
|
||||
pub const PPROCESS_MEMORY_COUNTERS_EX = [*c]PROCESS_MEMORY_COUNTERS_EX;
|
||||
pub const PERFORMANCE_INFORMATION = extern struct {
|
||||
cb: DWORD,
|
||||
CommitTotal: SIZE_T,
|
||||
CommitLimit: SIZE_T,
|
||||
CommitPeak: SIZE_T,
|
||||
PhysicalTotal: SIZE_T,
|
||||
PhysicalAvailable: SIZE_T,
|
||||
SystemCache: SIZE_T,
|
||||
KernelTotal: SIZE_T,
|
||||
KernelPaged: SIZE_T,
|
||||
KernelNonpaged: SIZE_T,
|
||||
PageSize: SIZE_T,
|
||||
HandleCount: DWORD,
|
||||
ProcessCount: DWORD,
|
||||
ThreadCount: DWORD,
|
||||
};
|
||||
pub const PPERFORMANCE_INFORMATION = [*c]PERFORMANCE_INFORMATION;
|
||||
pub const PERFORMACE_INFORMATION = PERFORMANCE_INFORMATION;
|
||||
pub const PPERFORMACE_INFORMATION = [*c]PERFORMANCE_INFORMATION;
|
||||
pub const ENUM_PAGE_FILE_INFORMATION = extern struct {
|
||||
cb: DWORD,
|
||||
Reserved: DWORD,
|
||||
TotalSize: SIZE_T,
|
||||
TotalInUse: SIZE_T,
|
||||
PeakUsage: SIZE_T,
|
||||
};
|
||||
pub const PENUM_PAGE_FILE_INFORMATION = [*c]ENUM_PAGE_FILE_INFORMATION;
|
||||
pub const PENUM_PAGE_FILE_CALLBACKW = ?fn (LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) callconv(.C) BOOL;
|
||||
pub const PENUM_PAGE_FILE_CALLBACKA = ?fn (LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) callconv(.C) BOOL;
|
||||
pub const PSAPI_WS_WATCH_INFORMATION_EX = extern struct {
|
||||
BasicInfo: PSAPI_WS_WATCH_INFORMATION,
|
||||
FaultingThreadId: ULONG_PTR,
|
||||
Flags: ULONG_PTR,
|
||||
};
|
||||
pub const PPSAPI_WS_WATCH_INFORMATION_EX = [*c]PSAPI_WS_WATCH_INFORMATION_EX;
|
||||
|
||||
@ -246,3 +246,31 @@ pub extern "kernel32" fn LeaveCriticalSection(lpCriticalSection: *CRITICAL_SECTI
|
||||
pub extern "kernel32" fn DeleteCriticalSection(lpCriticalSection: *CRITICAL_SECTION) callconv(.Stdcall) void;
|
||||
|
||||
pub extern "kernel32" fn InitOnceExecuteOnce(InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*c_void, Context: ?*c_void) callconv(.Stdcall) BOOL;
|
||||
|
||||
pub extern "kernel32" fn K32EmptyWorkingSet(hProcess: HANDLE) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumDeviceDrivers(lpImageBase: [*c]LPVOID, cb: DWORD, lpcbNeeded: LPDWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumPageFilesA(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumPageFilesW(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumProcessModules(hProcess: HANDLE, lphModule: [*c]HMODULE, cb: DWORD, lpcbNeeded: LPDWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumProcessModulesEx(hProcess: HANDLE, lphModule: [*c]HMODULE, cb: DWORD, lpcbNeeded: LPDWORD, dwFilterFlag: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32EnumProcesses(lpidProcess: [*c]DWORD, cb: DWORD, cbNeeded: [*c]DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32GetDeviceDriverBaseNameA(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetDeviceDriverBaseNameW(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetDeviceDriverFileNameA(ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetDeviceDriverFileNameW(ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetMappedFileNameA(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetMappedFileNameW(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetModuleBaseNameA(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetModuleBaseNameW(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetModuleFileNameExA(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetModuleFileNameExW(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetModuleInformation(hProcess: HANDLE, hModule: HMODULE, lpmodinfo: LPMODULEINFO, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32GetPerformanceInfo(pPerformanceInformation: PPERFORMACE_INFORMATION, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32GetProcessImageFileNameA(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetProcessImageFileNameW(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "kernel32" fn K32GetProcessMemoryInfo(Process: HANDLE, ppsmemCounters: PPROCESS_MEMORY_COUNTERS, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32GetWsChanges(hProcess: HANDLE, lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32GetWsChangesEx(hProcess: HANDLE, lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32InitializeProcessForWsWatch(hProcess: HANDLE) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32QueryWorkingSet(hProcess: HANDLE, pv: PVOID, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "kernel32" fn K32QueryWorkingSetEx(hProcess: HANDLE, pv: PVOID, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
|
||||
29
lib/std/os/windows/psapi.zig
Normal file
29
lib/std/os/windows/psapi.zig
Normal file
@ -0,0 +1,29 @@
|
||||
usingnamespace @import("bits.zig");
|
||||
|
||||
pub extern "psapi" fn EmptyWorkingSet(hProcess: HANDLE) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumDeviceDrivers(lpImageBase: [*c]LPVOID, cb: DWORD, lpcbNeeded: LPDWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumPageFilesA(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumPageFilesW(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumProcessModules(hProcess: HANDLE, lphModule: [*c]HMODULE, cb: DWORD, lpcbNeeded: LPDWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumProcessModulesEx(hProcess: HANDLE, lphModule: [*c]HMODULE, cb: DWORD, lpcbNeeded: LPDWORD, dwFilterFlag: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn EnumProcesses(lpidProcess: [*c]DWORD, cb: DWORD, cbNeeded: [*c]DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn GetDeviceDriverBaseNameA(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetDeviceDriverBaseNameW(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetDeviceDriverFileNameA(ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetDeviceDriverFileNameW(ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetMappedFileNameA(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetMappedFileNameW(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetModuleBaseNameA(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetModuleBaseNameW(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetModuleFileNameExA(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetModuleFileNameExW(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetModuleInformation(hProcess: HANDLE, hModule: HMODULE, lpmodinfo: LPMODULEINFO, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn GetPerformanceInfo(pPerformanceInformation: PPERFORMACE_INFORMATION, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn GetProcessImageFileNameA(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetProcessImageFileNameW(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD) callconv(.Stdcall) DWORD;
|
||||
pub extern "psapi" fn GetProcessMemoryInfo(Process: HANDLE, ppsmemCounters: PPROCESS_MEMORY_COUNTERS, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn GetWsChanges(hProcess: HANDLE, lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn GetWsChangesEx(hProcess: HANDLE, lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn InitializeProcessForWsWatch(hProcess: HANDLE) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn QueryWorkingSet(hProcess: HANDLE, pv: PVOID, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
pub extern "psapi" fn QueryWorkingSetEx(hProcess: HANDLE, pv: PVOID, cb: DWORD) callconv(.Stdcall) BOOL;
|
||||
Loading…
x
Reference in New Issue
Block a user