winsafe 0.0.27

Windows API and GUI in safe, idiomatic Rust.
Documentation
use crate::kernel::ffi_types::*;

extern_sys! { "advapi32";
	AdjustTokenPrivileges(HANDLE, BOOL, PCVOID, u32, PVOID, *mut u32) -> BOOL
	AllocateAndInitializeSid(PCVOID, u8, u32, u32, u32, u32, u32, u32, u32, u32, PVOID) -> BOOL
	CheckTokenCapability(HANDLE, PCVOID, *mut BOOL) -> BOOL
	CheckTokenMembership(HANDLE, PCVOID, *mut BOOL) -> BOOL
	CloseServiceHandle(HANDLE) -> BOOL
	ConvertSidToStringSidW(PCVOID, *mut PSTR) -> BOOL
	ConvertStringSidToSidW(PCSTR, *mut *mut u8) -> BOOL
	CopySid(u32, PVOID, PCVOID) -> BOOL
	CreateServiceW(HANDLE, PCSTR, PCSTR, u32, u32, u32, u32, PCSTR, PCSTR, *mut u32, PCSTR, PCSTR, PCSTR) -> HANDLE
	CreateWellKnownSid(u32, PCVOID, PVOID, *mut u32) -> BOOL
	DecryptFileW(PCSTR, u32) -> BOOL
	DeleteService(HANDLE) -> BOOL
	DeregisterEventSource(HANDLE) -> BOOL
	DuplicateToken(HANDLE, u32, *mut HANDLE) -> BOOL
	EncryptFileW(PCSTR) -> BOOL
	EncryptionDisable(PCSTR, BOOL) -> BOOL
	EqualDomainSid(PCVOID, PCVOID, *mut BOOL) -> BOOL
	EqualPrefixSid(PCVOID, PCVOID) -> BOOL
	EqualSid(PCVOID, PCVOID) -> BOOL
	FreeSid(PVOID)
	GetLengthSid(PCVOID) -> u32
	GetSidLengthRequired(u8) -> u32
	GetTokenInformation(HANDLE, u32, PCVOID, u32, *mut u32) -> BOOL
	GetUserNameW(PSTR, *mut u32) -> BOOL
	GetWindowsAccountDomainSid(PCVOID, PVOID, *mut u32) -> BOOL
	ImpersonateLoggedOnUser(HANDLE) -> BOOL
	InitializeSecurityDescriptor(PVOID, u32) -> BOOL
	InitiateSystemShutdownExW(PCSTR, PCSTR, u32, BOOL, BOOL, u32) -> BOOL
	InitiateSystemShutdownW(PCSTR, PCSTR, u32, BOOL, BOOL) -> BOOL
	IsTokenRestricted(HANDLE) -> BOOL
	IsValidSecurityDescriptor(PCVOID) -> BOOL
	IsValidSid(PCVOID) -> BOOL
	IsWellKnownSid(PCVOID, u32) -> BOOL
	LookupAccountNameW(PCSTR, PCSTR, PVOID, *mut u32, PSTR, *mut u32, *mut u32) -> BOOL
	LookupAccountSidW(PCSTR, PCVOID, PSTR, *mut u32, PSTR, *mut u32, *mut u32) -> BOOL
	LookupPrivilegeNameW(PCSTR, PCVOID, PSTR, *mut u32) -> BOOL
	LookupPrivilegeValueW(PCSTR, PCSTR, PVOID) -> BOOL
	OpenProcessToken(HANDLE, u32, *mut HANDLE) -> BOOL
	OpenSCManagerW(PCSTR, PCSTR, u32) -> HANDLE
	OpenServiceW(HANDLE, PCSTR, u32) -> HANDLE
	OpenThreadToken(HANDLE, u32, BOOL, *mut HANDLE) -> BOOL
	RegCloseKey(HANDLE) -> i32
	RegConnectRegistryW(PCSTR, HANDLE, *mut HANDLE) -> i32
	RegCopyTreeW(HANDLE, PCSTR, HANDLE) -> i32
	RegCreateKeyExW(HANDLE, PCSTR, u32, PCSTR, u32, u32, PCVOID, *mut HANDLE, *mut u32) -> i32
	RegCreateKeyTransactedW(HANDLE, PCSTR, u32, PCSTR, u32, u32, PCVOID, *mut HANDLE, *mut u32, HANDLE, PVOID) -> i32
	RegDeleteKeyExW(HANDLE, PCSTR, u32, u32) -> i32
	RegDeleteKeyTransactedW(HANDLE, PCSTR, u32, u32, HANDLE, PVOID) -> i32
	RegDeleteKeyW(HANDLE, PCSTR) -> i32
	RegDeleteTreeW(HANDLE, PCSTR) -> i32
	RegDeleteValueW(HANDLE, PCSTR) -> i32
	RegDisablePredefinedCache() -> i32
	RegDisablePredefinedCacheEx() -> i32
	RegDisableReflectionKey(HANDLE) -> i32
	RegEnableReflectionKey(HANDLE) -> i32
	RegEnumKeyExW(HANDLE, u32, PSTR, *mut u32, *mut u32, PSTR, *mut u32, PVOID) -> i32
	RegEnumValueW(HANDLE, u32, PSTR, *mut u32, *mut u32, *mut u32, *mut u8, *mut u32) -> i32
	RegFlushKey(HANDLE) -> i32
	RegGetValueW(HANDLE, PCSTR, PCSTR, u32, *mut u32, PVOID, *mut u32) -> i32
	RegisterEventSourceW(PCSTR, PCSTR) -> HANDLE
	RegisterServiceCtrlHandlerExW(PCSTR, PFUNC, PCVOID) -> HANDLE
	RegLoadKeyW(HANDLE, PCSTR, PCSTR) -> i32
	RegOpenCurrentUser(u32, *mut HANDLE) -> i32
	RegOpenKeyExW(HANDLE, PCSTR, u32, u32, *mut HANDLE) -> i32
	RegOpenKeyTransactedW(HANDLE, PCSTR, u32, u32, *mut HANDLE, HANDLE, PVOID) -> i32
	RegQueryInfoKeyW(HANDLE, PSTR, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32, PVOID) -> i32
	RegQueryMultipleValuesW(HANDLE, PVOID, u32, PSTR, *mut u32) -> i32
	RegQueryReflectionKey(HANDLE, *mut BOOL) -> i32
	RegQueryValueExW(HANDLE, PCSTR, *mut u32, *mut u32, *mut u8, *mut u32) -> i32
	RegRenameKey(HANDLE, PCSTR, PCSTR) -> i32
	RegReplaceKeyW(HANDLE, PCSTR, PCSTR, PCSTR) -> i32
	RegRestoreKeyW(HANDLE, PCSTR, u32) -> i32
	RegSaveKeyExW(HANDLE, PCSTR, PCVOID, u32) -> i32
	RegSaveKeyW(HANDLE, PCSTR, PCVOID) -> i32
	RegSetKeyValueW(HANDLE, PCSTR, PCSTR, u32, PCVOID, u32) -> i32
	RegSetValueExW(HANDLE, PCSTR, u32, u32, *const u8, u32) -> i32
	RegUnLoadKeyW(HANDLE, PCSTR) -> i32
	ReportEventW(HANDLE, u16, u16, u32, PCVOID, u16, u32, *const PCSTR, PCVOID) -> BOOL
	SetServiceStatus(HANDLE, PCVOID) -> BOOL
}

extern_sys! { "ktmw32";
	CommitTransaction(HANDLE) -> BOOL
	CreateTransaction(PCVOID, PVOID, u32, u32, u32, u32, PSTR) -> HANDLE
	GetTransactionId(HANDLE, PVOID) -> BOOL
	OpenTransaction(u32, PCVOID) -> HANDLE
	RollbackTransaction(HANDLE) -> BOOL
}