// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Definitions for the user environment API use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, PHKEY}; use um::winnt::{ HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PSID, PSID_AND_ATTRIBUTES, PWSTR }; use um::winreg::REGSAM; extern "system" { // pub fn LoadUserProfileA( // hToken: HANDLE, // lpProfileInfo: LPPROFILEINFOA, // ) -> BOOL; // pub fn LoadUserProfileW( // hToken: HANDLE, // lpProfileInfo: LPPROFILEINFOW, // ) -> BOOL; 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; // pub fn GetGPOListA(); // pub fn GetGPOListW(); // pub fn FreeGPOListA(); // pub fn FreeGPOListW(); // pub fn GetAppliedGPOListA(); // pub fn GetAppliedGPOListW(); // pub fn ProcessGroupPolicyCompleted(); // pub fn ProcessGroupPolicyCompletedEx(); // pub fn RsopAccessCheckByType(); // pub fn RsopFileAccessCheck(); // pub fn RsopSetPolicySettingStatus(); // pub fn RsopResetPolicySettingStatus(); // pub fn GenerateGPNotification(); pub fn CreateAppContainerProfile( pszAppContainerName: PCWSTR, pszDisplayName: PCWSTR, pszDescription: PCWSTR, pCapabilities: PSID_AND_ATTRIBUTES, dwCapabilityCount: DWORD, ppSidAppContainerSid: *mut PSID, ) -> HRESULT; pub fn DeleteAppContainerProfile( pszAppContainerName: PCWSTR, ) -> HRESULT; pub fn GetAppContainerRegistryLocation( desiredAccess: REGSAM, phAppContainerKey: PHKEY, ) -> HRESULT; pub fn GetAppContainerFolderPath( pszAppContainerSid: PCWSTR, ppszPath: *mut PWSTR, ) -> HRESULT; pub fn DeriveAppContainerSidFromAppContainerName( pszAppContainerName: PCWSTR, ppsidAppContainerSid: *mut PSID, ) -> HRESULT; pub fn DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName( psidAppContainerSid: PSID, pszRestrictedAppContainerName: PCWSTR, ppsidRestrictedAppContainerSid: *mut PSID, ) -> HRESULT; }