Revision control
Copy as Markdown
Other Tools
// Licensed under the Apache License, Version 2.0
// 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;
}