1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! Definitions for the user environment API 7 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, PHKEY}; 8 use um::winnt::{ 9 HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PSID, PSID_AND_ATTRIBUTES, PWSTR 10 }; 11 use um::winreg::REGSAM; 12 extern "system" { 13 // pub fn LoadUserProfileA( 14 // hToken: HANDLE, 15 // lpProfileInfo: LPPROFILEINFOA, 16 // ) -> BOOL; 17 // pub fn LoadUserProfileW( 18 // hToken: HANDLE, 19 // lpProfileInfo: LPPROFILEINFOW, 20 // ) -> BOOL; UnloadUserProfile( hToken: HANDLE, hProfile: HANDLE, ) -> BOOL21 pub fn UnloadUserProfile( 22 hToken: HANDLE, 23 hProfile: HANDLE, 24 ) -> BOOL; GetProfilesDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL25 pub fn GetProfilesDirectoryA( 26 lpProfileDir: LPSTR, 27 lpcchSize: LPDWORD, 28 ) -> BOOL; GetProfilesDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL29 pub fn GetProfilesDirectoryW( 30 lpProfileDir: LPWSTR, 31 lpcchSize: LPDWORD, 32 ) -> BOOL; GetProfileType( dwFlags: *mut DWORD, ) -> BOOL33 pub fn GetProfileType( 34 dwFlags: *mut DWORD, 35 ) -> BOOL; DeleteProfileA( lpSidString: LPCSTR, lpProfilePath: LPCSTR, lpComputerName: LPCSTR, ) -> BOOL36 pub fn DeleteProfileA( 37 lpSidString: LPCSTR, 38 lpProfilePath: LPCSTR, 39 lpComputerName: LPCSTR, 40 ) -> BOOL; DeleteProfileW( lpSidString: LPCWSTR, lpProfilePath: LPCWSTR, lpComputerName: LPCWSTR, ) -> BOOL41 pub fn DeleteProfileW( 42 lpSidString: LPCWSTR, 43 lpProfilePath: LPCWSTR, 44 lpComputerName: LPCWSTR, 45 ) -> BOOL; CreateProfile( pszUserSid: LPCWSTR, pszUserName: LPCWSTR, pszProfilePath: LPWSTR, cchProfilePath: DWORD, ) -> HRESULT46 pub fn CreateProfile( 47 pszUserSid: LPCWSTR, 48 pszUserName: LPCWSTR, 49 pszProfilePath: LPWSTR, 50 cchProfilePath: DWORD, 51 ) -> HRESULT; GetDefaultUserProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL52 pub fn GetDefaultUserProfileDirectoryA( 53 lpProfileDir: LPSTR, 54 lpcchSize: LPDWORD, 55 ) -> BOOL; GetDefaultUserProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL56 pub fn GetDefaultUserProfileDirectoryW( 57 lpProfileDir: LPWSTR, 58 lpcchSize: LPDWORD, 59 ) -> BOOL; GetAllUsersProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL60 pub fn GetAllUsersProfileDirectoryA( 61 lpProfileDir: LPSTR, 62 lpcchSize: LPDWORD, 63 ) -> BOOL; GetAllUsersProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL64 pub fn GetAllUsersProfileDirectoryW( 65 lpProfileDir: LPWSTR, 66 lpcchSize: LPDWORD, 67 ) -> BOOL; GetUserProfileDirectoryA( hToken: HANDLE, lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL68 pub fn GetUserProfileDirectoryA( 69 hToken: HANDLE, 70 lpProfileDir: LPSTR, 71 lpcchSize: LPDWORD, 72 ) -> BOOL; GetUserProfileDirectoryW( hToken: HANDLE, lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL73 pub fn GetUserProfileDirectoryW( 74 hToken: HANDLE, 75 lpProfileDir: LPWSTR, 76 lpcchSize: LPDWORD, 77 ) -> BOOL; CreateEnvironmentBlock( lpEnvironment: *mut LPVOID, hToken: HANDLE, bInherit: BOOL, ) -> BOOL78 pub fn CreateEnvironmentBlock( 79 lpEnvironment: *mut LPVOID, 80 hToken: HANDLE, 81 bInherit: BOOL, 82 ) -> BOOL; DestroyEnvironmentBlock( lpEnvironment: LPVOID, ) -> BOOL83 pub fn DestroyEnvironmentBlock( 84 lpEnvironment: LPVOID, 85 ) -> BOOL; ExpandEnvironmentStringsForUserA( hToken: HANDLE, lpSrc: LPCSTR, lpDest: LPSTR, dwSize: DWORD, ) -> BOOL86 pub fn ExpandEnvironmentStringsForUserA( 87 hToken: HANDLE, 88 lpSrc: LPCSTR, 89 lpDest: LPSTR, 90 dwSize: DWORD, 91 ) -> BOOL; ExpandEnvironmentStringsForUserW( hToken: HANDLE, lpSrc: LPCWSTR, lpDest: LPWSTR, dwSize: DWORD, ) -> BOOL92 pub fn ExpandEnvironmentStringsForUserW( 93 hToken: HANDLE, 94 lpSrc: LPCWSTR, 95 lpDest: LPWSTR, 96 dwSize: DWORD, 97 ) -> BOOL; RefreshPolicy( bMachine: BOOL, ) -> BOOL98 pub fn RefreshPolicy( 99 bMachine: BOOL, 100 ) -> BOOL; RefreshPolicyEx( bMachine: BOOL, dwOptions: DWORD, ) -> BOOL101 pub fn RefreshPolicyEx( 102 bMachine: BOOL, 103 dwOptions: DWORD, 104 ) -> BOOL; EnterCriticalPolicySection( bMachine: BOOL, ) -> HANDLE105 pub fn EnterCriticalPolicySection( 106 bMachine: BOOL, 107 ) -> HANDLE; LeaveCriticalPolicySection( hSection: HANDLE, ) -> BOOL108 pub fn LeaveCriticalPolicySection( 109 hSection: HANDLE, 110 ) -> BOOL; RegisterGPNotification( hEvent: HANDLE, bMachine: BOOL, ) -> BOOL111 pub fn RegisterGPNotification( 112 hEvent: HANDLE, 113 bMachine: BOOL, 114 ) -> BOOL; UnregisterGPNotification( hEvent: HANDLE, ) -> BOOL115 pub fn UnregisterGPNotification( 116 hEvent: HANDLE, 117 ) -> BOOL; 118 // pub fn GetGPOListA(); 119 // pub fn GetGPOListW(); 120 // pub fn FreeGPOListA(); 121 // pub fn FreeGPOListW(); 122 // pub fn GetAppliedGPOListA(); 123 // pub fn GetAppliedGPOListW(); 124 // pub fn ProcessGroupPolicyCompleted(); 125 // pub fn ProcessGroupPolicyCompletedEx(); 126 // pub fn RsopAccessCheckByType(); 127 // pub fn RsopFileAccessCheck(); 128 // pub fn RsopSetPolicySettingStatus(); 129 // pub fn RsopResetPolicySettingStatus(); 130 // pub fn GenerateGPNotification(); CreateAppContainerProfile( pszAppContainerName: PCWSTR, pszDisplayName: PCWSTR, pszDescription: PCWSTR, pCapabilities: PSID_AND_ATTRIBUTES, dwCapabilityCount: DWORD, ppSidAppContainerSid: *mut PSID, ) -> HRESULT131 pub fn CreateAppContainerProfile( 132 pszAppContainerName: PCWSTR, 133 pszDisplayName: PCWSTR, 134 pszDescription: PCWSTR, 135 pCapabilities: PSID_AND_ATTRIBUTES, 136 dwCapabilityCount: DWORD, 137 ppSidAppContainerSid: *mut PSID, 138 ) -> HRESULT; DeleteAppContainerProfile( pszAppContainerName: PCWSTR, ) -> HRESULT139 pub fn DeleteAppContainerProfile( 140 pszAppContainerName: PCWSTR, 141 ) -> HRESULT; GetAppContainerRegistryLocation( desiredAccess: REGSAM, phAppContainerKey: PHKEY, ) -> HRESULT142 pub fn GetAppContainerRegistryLocation( 143 desiredAccess: REGSAM, 144 phAppContainerKey: PHKEY, 145 ) -> HRESULT; GetAppContainerFolderPath( pszAppContainerSid: PCWSTR, ppszPath: *mut PWSTR, ) -> HRESULT146 pub fn GetAppContainerFolderPath( 147 pszAppContainerSid: PCWSTR, 148 ppszPath: *mut PWSTR, 149 ) -> HRESULT; DeriveAppContainerSidFromAppContainerName( pszAppContainerName: PCWSTR, ppsidAppContainerSid: *mut PSID, ) -> HRESULT150 pub fn DeriveAppContainerSidFromAppContainerName( 151 pszAppContainerName: PCWSTR, 152 ppsidAppContainerSid: *mut PSID, 153 ) -> HRESULT; DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName( psidAppContainerSid: PSID, pszRestrictedAppContainerName: PCWSTR, ppsidRestrictedAppContainerSid: *mut PSID, ) -> HRESULT154 pub fn DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName( 155 psidAppContainerSid: PSID, 156 pszRestrictedAppContainerName: PCWSTR, 157 ppsidRestrictedAppContainerSid: *mut PSID, 158 ) -> HRESULT; 159 } 160