use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID};
use um::winnt::{HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
extern "system" {
pub fn UnloadUserProfile(
hToken: HANDLE,
hProfile: HANDLE,
) -> BOOL;
pub fn GetProfilesDirectoryA(
lpProfileDir: LPSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetProfilesDirectoryW(
lpProfileDir: LPWSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetProfileType(
dwFlags: *mut DWORD,
) -> BOOL;
pub fn DeleteProfileA(
lpSidString: LPCSTR,
lpProfilePath: LPCSTR,
lpComputerName: LPCSTR,
) -> BOOL;
pub fn DeleteProfileW(
lpSidString: LPCWSTR,
lpProfilePath: LPCWSTR,
lpComputerName: LPCWSTR,
) -> BOOL;
pub fn CreateProfile(
pszUserSid: LPCWSTR,
pszUserName: LPCWSTR,
pszProfilePath: LPWSTR,
cchProfilePath: DWORD,
) -> HRESULT;
pub fn GetDefaultUserProfileDirectoryA(
lpProfileDir: LPSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetDefaultUserProfileDirectoryW(
lpProfileDir: LPWSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetAllUsersProfileDirectoryA(
lpProfileDir: LPSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetAllUsersProfileDirectoryW(
lpProfileDir: LPWSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetUserProfileDirectoryA(
hToken: HANDLE,
lpProfileDir: LPSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn GetUserProfileDirectoryW(
hToken: HANDLE,
lpProfileDir: LPWSTR,
lpcchSize: LPDWORD,
) -> BOOL;
pub fn CreateEnvironmentBlock(
lpEnvironment: *mut LPVOID,
hToken: HANDLE,
bInherit: BOOL,
) -> BOOL;
pub fn DestroyEnvironmentBlock(
lpEnvironment: LPVOID,
) -> BOOL;
pub fn ExpandEnvironmentStringsForUserA(
hToken: HANDLE,
lpSrc: LPCSTR,
lpDest: LPSTR,
dwSize: DWORD,
) -> BOOL;
pub fn ExpandEnvironmentStringsForUserW(
hToken: HANDLE,
lpSrc: LPCWSTR,
lpDest: LPWSTR,
dwSize: DWORD,
) -> BOOL;
pub fn RefreshPolicy(
bMachine: BOOL,
) -> BOOL;
pub fn RefreshPolicyEx(
bMachine: BOOL,
dwOptions: DWORD,
) -> BOOL;
pub fn EnterCriticalPolicySection(
bMachine: BOOL,
) -> HANDLE;
pub fn LeaveCriticalPolicySection(
hSection: HANDLE,
) -> BOOL;
pub fn RegisterGPNotification(
hEvent: HANDLE,
bMachine: BOOL,
) -> BOOL;
pub fn UnregisterGPNotification(
hEvent: HANDLE,
) -> BOOL;
}