winsafe 0.0.27

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

extern_sys! { "shell32";
	CommandLineToArgvW(PCSTR, *mut i32) -> *mut PSTR
	DragAcceptFiles(HANDLE, BOOL)
	DragFinish(HANDLE)
	DragQueryFileW(HANDLE, u32, PSTR, u32) -> u32
	DragQueryPoint(HANDLE, PVOID) -> BOOL
	GetCurrentProcessExplicitAppUserModelID(*mut PSTR) -> HRES
	SetCurrentProcessExplicitAppUserModelID(PCSTR) -> HRES
	SHAddToRecentDocs(u32, PCVOID)
	SHBindToParent(PCVOID, PCVOID, *mut COMPTR, PVOID) -> HRES
	SHCreateItemFromIDList(PCVOID, PCVOID, *mut COMPTR) -> HRES
	SHCreateItemFromParsingName(PCSTR, PVOID, PCVOID, *mut COMPTR) -> HRES
	SHCreateItemFromRelativeName(COMPTR, PCSTR, COMPTR, PCVOID, *mut COMPTR) -> HRES
	SHCreateItemInKnownFolder(PCVOID, u32, PCSTR, PCVOID, *mut COMPTR) -> HRES
	SHCreateShellItemArray(PCVOID, COMPTR, u32, PCVOID, *mut COMPTR) -> HRES
	SHCreateShellItemArrayFromShellItem(COMPTR, PCVOID, *mut COMPTR) -> HRES
	Shell_NotifyIconW(u32, PCVOID) -> BOOL
	ShellAboutW(HANDLE, PCSTR, PCSTR, HANDLE) -> i32
	ShellExecuteW(HANDLE, PCSTR, PCSTR, PCSTR, PCSTR, i32) -> HANDLE
	SHFileOperationW(PVOID) -> i32
	SHGetFileInfoW(PCSTR, u32, PVOID, u32, u32) -> usize
	SHGetIDListFromObject(COMPTR, PVOID) -> HRES
	SHGetPropertyStoreFromIDList(PCVOID, u32, PCVOID, *mut COMPTR) -> HRES
	SHGetPropertyStoreFromParsingName(PCSTR, COMPTR, u32, PCVOID, *mut COMPTR) -> HRES
	SHGetStockIconInfo(u32, u32, PVOID) -> HRES
}

extern_sys! { "shlwapi";
	PathCombineW(PSTR, PCSTR, PCSTR) -> PSTR
	PathCommonPrefixW(PCSTR, PCSTR, PSTR) -> i32
	PathSkipRootW(PCSTR) -> PCSTR
	PathStripPathW(PSTR)
	PathUndecorateW(PSTR)
	PathUnquoteSpacesW(PSTR) -> BOOL
	SHCreateMemStream(*const u8, u32) -> COMPTR
}

extern_sys! { "userenv";
	GetAllUsersProfileDirectoryW(PSTR, *mut u32) -> BOOL
	GetDefaultUserProfileDirectoryW(PSTR, *mut u32) -> BOOL
	GetProfilesDirectoryW(PSTR, *mut u32) -> BOOL
}