1 // Copyright © 2015-2017 winapi-rs developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 5 // All files in the project carrying such notice may not be copied, modified, or distributed 6 // except according to those terms. 7 //! Definitions for the user environment API 8 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, PHKEY}; 9 use um::winnt::{ 10 HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PSID, PSID_AND_ATTRIBUTES, PWSTR 11 }; 12 use um::winreg::REGSAM; 13 extern "system" { 14 // pub fn LoadUserProfileA( 15 // hToken: HANDLE, 16 // lpProfileInfo: LPPROFILEINFOA, 17 // ) -> BOOL; 18 // pub fn LoadUserProfileW( 19 // hToken: HANDLE, 20 // lpProfileInfo: LPPROFILEINFOW, 21 // ) -> BOOL; UnloadUserProfile( hToken: HANDLE, hProfile: HANDLE, ) -> BOOL22 pub fn UnloadUserProfile( 23 hToken: HANDLE, 24 hProfile: HANDLE, 25 ) -> BOOL; GetProfilesDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL26 pub fn GetProfilesDirectoryA( 27 lpProfileDir: LPSTR, 28 lpcchSize: LPDWORD, 29 ) -> BOOL; GetProfilesDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL30 pub fn GetProfilesDirectoryW( 31 lpProfileDir: LPWSTR, 32 lpcchSize: LPDWORD, 33 ) -> BOOL; GetProfileType( dwFlags: *mut DWORD, ) -> BOOL34 pub fn GetProfileType( 35 dwFlags: *mut DWORD, 36 ) -> BOOL; DeleteProfileA( lpSidString: LPCSTR, lpProfilePath: LPCSTR, lpComputerName: LPCSTR, ) -> BOOL37 pub fn DeleteProfileA( 38 lpSidString: LPCSTR, 39 lpProfilePath: LPCSTR, 40 lpComputerName: LPCSTR, 41 ) -> BOOL; DeleteProfileW( lpSidString: LPCWSTR, lpProfilePath: LPCWSTR, lpComputerName: LPCWSTR, ) -> BOOL42 pub fn DeleteProfileW( 43 lpSidString: LPCWSTR, 44 lpProfilePath: LPCWSTR, 45 lpComputerName: LPCWSTR, 46 ) -> BOOL; CreateProfile( pszUserSid: LPCWSTR, pszUserName: LPCWSTR, pszProfilePath: LPWSTR, cchProfilePath: DWORD, ) -> HRESULT47 pub fn CreateProfile( 48 pszUserSid: LPCWSTR, 49 pszUserName: LPCWSTR, 50 pszProfilePath: LPWSTR, 51 cchProfilePath: DWORD, 52 ) -> HRESULT; GetDefaultUserProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL53 pub fn GetDefaultUserProfileDirectoryA( 54 lpProfileDir: LPSTR, 55 lpcchSize: LPDWORD, 56 ) -> BOOL; GetDefaultUserProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL57 pub fn GetDefaultUserProfileDirectoryW( 58 lpProfileDir: LPWSTR, 59 lpcchSize: LPDWORD, 60 ) -> BOOL; GetAllUsersProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL61 pub fn GetAllUsersProfileDirectoryA( 62 lpProfileDir: LPSTR, 63 lpcchSize: LPDWORD, 64 ) -> BOOL; GetAllUsersProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL65 pub fn GetAllUsersProfileDirectoryW( 66 lpProfileDir: LPWSTR, 67 lpcchSize: LPDWORD, 68 ) -> BOOL; GetUserProfileDirectoryA( hToken: HANDLE, lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL69 pub fn GetUserProfileDirectoryA( 70 hToken: HANDLE, 71 lpProfileDir: LPSTR, 72 lpcchSize: LPDWORD, 73 ) -> BOOL; GetUserProfileDirectoryW( hToken: HANDLE, lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL74 pub fn GetUserProfileDirectoryW( 75 hToken: HANDLE, 76 lpProfileDir: LPWSTR, 77 lpcchSize: LPDWORD, 78 ) -> BOOL; CreateEnvironmentBlock( lpEnvironment: *mut LPVOID, hToken: HANDLE, bInherit: BOOL, ) -> BOOL79 pub fn CreateEnvironmentBlock( 80 lpEnvironment: *mut LPVOID, 81 hToken: HANDLE, 82 bInherit: BOOL, 83 ) -> BOOL; DestroyEnvironmentBlock( lpEnvironment: LPVOID, ) -> BOOL84 pub fn DestroyEnvironmentBlock( 85 lpEnvironment: LPVOID, 86 ) -> BOOL; ExpandEnvironmentStringsForUserA( hToken: HANDLE, lpSrc: LPCSTR, lpDest: LPSTR, dwSize: DWORD, ) -> BOOL87 pub fn ExpandEnvironmentStringsForUserA( 88 hToken: HANDLE, 89 lpSrc: LPCSTR, 90 lpDest: LPSTR, 91 dwSize: DWORD, 92 ) -> BOOL; ExpandEnvironmentStringsForUserW( hToken: HANDLE, lpSrc: LPCWSTR, lpDest: LPWSTR, dwSize: DWORD, ) -> BOOL93 pub fn ExpandEnvironmentStringsForUserW( 94 hToken: HANDLE, 95 lpSrc: LPCWSTR, 96 lpDest: LPWSTR, 97 dwSize: DWORD, 98 ) -> BOOL; RefreshPolicy( bMachine: BOOL, ) -> BOOL99 pub fn RefreshPolicy( 100 bMachine: BOOL, 101 ) -> BOOL; RefreshPolicyEx( bMachine: BOOL, dwOptions: DWORD, ) -> BOOL102 pub fn RefreshPolicyEx( 103 bMachine: BOOL, 104 dwOptions: DWORD, 105 ) -> BOOL; EnterCriticalPolicySection( bMachine: BOOL, ) -> HANDLE106 pub fn EnterCriticalPolicySection( 107 bMachine: BOOL, 108 ) -> HANDLE; LeaveCriticalPolicySection( hSection: HANDLE, ) -> BOOL109 pub fn LeaveCriticalPolicySection( 110 hSection: HANDLE, 111 ) -> BOOL; RegisterGPNotification( hEvent: HANDLE, bMachine: BOOL, ) -> BOOL112 pub fn RegisterGPNotification( 113 hEvent: HANDLE, 114 bMachine: BOOL, 115 ) -> BOOL; UnregisterGPNotification( hEvent: HANDLE, ) -> BOOL116 pub fn UnregisterGPNotification( 117 hEvent: HANDLE, 118 ) -> BOOL; 119 // pub fn GetGPOListA(); 120 // pub fn GetGPOListW(); 121 // pub fn FreeGPOListA(); 122 // pub fn FreeGPOListW(); 123 // pub fn GetAppliedGPOListA(); 124 // pub fn GetAppliedGPOListW(); 125 // pub fn ProcessGroupPolicyCompleted(); 126 // pub fn ProcessGroupPolicyCompletedEx(); 127 // pub fn RsopAccessCheckByType(); 128 // pub fn RsopFileAccessCheck(); 129 // pub fn RsopSetPolicySettingStatus(); 130 // pub fn RsopResetPolicySettingStatus(); 131 // pub fn GenerateGPNotification(); CreateAppContainerProfile( pszAppContainerName: PCWSTR, pszDisplayName: PCWSTR, pszDescription: PCWSTR, pCapabilities: PSID_AND_ATTRIBUTES, dwCapabilityCount: DWORD, ppSidAppContainerSid: *mut PSID ) -> HRESULT132 pub fn CreateAppContainerProfile( 133 pszAppContainerName: PCWSTR, 134 pszDisplayName: PCWSTR, 135 pszDescription: PCWSTR, 136 pCapabilities: PSID_AND_ATTRIBUTES, 137 dwCapabilityCount: DWORD, 138 ppSidAppContainerSid: *mut PSID 139 ) -> HRESULT; DeleteAppContainerProfile( pszAppContainerName: PCWSTR ) -> HRESULT140 pub fn DeleteAppContainerProfile( 141 pszAppContainerName: PCWSTR 142 ) -> HRESULT; GetAppContainerRegistryLocation( desiredAccess: REGSAM, phAppContainerKey: PHKEY ) -> HRESULT143 pub fn GetAppContainerRegistryLocation( 144 desiredAccess: REGSAM, 145 phAppContainerKey: PHKEY 146 ) -> HRESULT; GetAppContainerFolderPath( pszAppContainerSid: PCWSTR, ppszPath: *mut PWSTR ) -> HRESULT147 pub fn GetAppContainerFolderPath( 148 pszAppContainerSid: PCWSTR, 149 ppszPath: *mut PWSTR 150 ) -> HRESULT; DeriveAppContainerSidFromAppContainerName( pszAppContainerName: PCWSTR, ppsidAppContainerSid: *mut PSID ) -> HRESULT151 pub fn DeriveAppContainerSidFromAppContainerName( 152 pszAppContainerName: PCWSTR, 153 ppsidAppContainerSid: *mut PSID 154 ) -> HRESULT; DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName( psidAppContainerSid: PSID, pszRestrictedAppContainerName: PCWSTR, ppsidRestrictedAppContainerSid: *mut PSID ) -> HRESULT155 pub fn DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName( 156 psidAppContainerSid: PSID, 157 pszRestrictedAppContainerName: PCWSTR, 158 ppsidRestrictedAppContainerSid: *mut PSID 159 ) -> HRESULT; 160 } 161