|
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
winbasep.h
Abstract:
Private Procedure declarations, constant definitions and macros for the Base component.
--*/ #ifndef _WINBASEP_
#define _WINBASEP_
#ifdef __cplusplus
extern "C" { #endif
#define FILE_FLAG_GLOBAL_HANDLE 0x00800000
#define FILE_FLAG_MM_CACHED_FILE_HANDLE 0x00400000
WINBASEAPI DWORD WINAPI HeapCreateTagsW( IN HANDLE hHeap, IN DWORD dwFlags, IN LPCWSTR lpTagPrefix, IN LPCWSTR lpTagNames );
typedef struct _HEAP_TAG_INFO { DWORD dwNumberOfAllocations; DWORD dwNumberOfFrees; DWORD dwBytesAllocated; } HEAP_TAG_INFO, *PHEAP_TAG_INFO; typedef PHEAP_TAG_INFO LPHEAP_TAG_INFO;
WINBASEAPI LPCWSTR WINAPI HeapQueryTagW( IN HANDLE hHeap, IN DWORD dwFlags, IN WORD wTagIndex, IN BOOL bResetCounters, OUT LPHEAP_TAG_INFO TagInfo );
typedef struct _HEAP_SUMMARY { DWORD cb; SIZE_T cbAllocated; SIZE_T cbCommitted; SIZE_T cbReserved; SIZE_T cbMaxReserve; } HEAP_SUMMARY, *PHEAP_SUMMARY; typedef PHEAP_SUMMARY LPHEAP_SUMMARY;
BOOL WINAPI HeapSummary( IN HANDLE hHeap, IN DWORD dwFlags, OUT LPHEAP_SUMMARY lpSummary );
BOOL WINAPI HeapExtend( IN HANDLE hHeap, IN DWORD dwFlags, IN LPVOID lpBase, IN DWORD dwBytes );
typedef struct _HEAP_USAGE_ENTRY { struct _HEAP_USAGE_ENTRY *lpNext; PVOID lpAddress; DWORD dwBytes; DWORD dwReserved; } HEAP_USAGE_ENTRY, *PHEAP_USAGE_ENTRY;
typedef struct _HEAP_USAGE { DWORD cb; SIZE_T cbAllocated; SIZE_T cbCommitted; SIZE_T cbReserved; SIZE_T cbMaxReserve; PHEAP_USAGE_ENTRY lpEntries; PHEAP_USAGE_ENTRY lpAddedEntries; PHEAP_USAGE_ENTRY lpRemovedEntries; DWORD Reserved[ 8 ]; } HEAP_USAGE, *PHEAP_USAGE;
BOOL WINAPI HeapUsage( IN HANDLE hHeap, IN DWORD dwFlags, IN BOOL bFirstCall, IN BOOL bLastCall, OUT PHEAP_USAGE lpUsage );
#define HFINDFILE HANDLE //
#define INVALID_HFINDFILE ((HFINDFILE)-1) //
typedef DWORD (*PFNWAITFORINPUTIDLE)(HANDLE hProcess, DWORD dwMilliseconds); VOID RegisterWaitForInputIdle(PFNWAITFORINPUTIDLE);
#define STARTF_HASSHELLDATA 0x00000400
#define STARTF_TITLEISLINKNAME 0x00000800
WINBASEAPI BOOL WINAPI CreateProcessInternalA( IN HANDLE hUserToken, IN LPCSTR lpApplicationName, IN LPSTR lpCommandLine, IN LPSECURITY_ATTRIBUTES lpProcessAttributes, IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN BOOL bInheritHandles, IN DWORD dwCreationFlags, IN LPVOID lpEnvironment, IN LPCSTR lpCurrentDirectory, IN LPSTARTUPINFOA lpStartupInfo, OUT LPPROCESS_INFORMATION lpProcessInformation, OUT PHANDLE hRestrictedUserToken ); WINBASEAPI BOOL WINAPI CreateProcessInternalW( IN HANDLE hUserToken, IN LPCWSTR lpApplicationName, IN LPWSTR lpCommandLine, IN LPSECURITY_ATTRIBUTES lpProcessAttributes, IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN BOOL bInheritHandles, IN DWORD dwCreationFlags, IN LPVOID lpEnvironment, IN LPCWSTR lpCurrentDirectory, IN LPSTARTUPINFOW lpStartupInfo, OUT LPPROCESS_INFORMATION lpProcessInformation, OUT PHANDLE hRestrictedUserToken ); #ifdef UNICODE
#define CreateProcessInternal CreateProcessInternalW
#else
#define CreateProcessInternal CreateProcessInternalA
#endif // !UNICODE
#if (_WIN32_WINNT >= 0x0500)
#define PRIVCOPY_FILE_METADATA 0x010 // Copy compression, DACL, (encryption)
#define PRIVCOPY_FILE_SACL 0x020 // Copy SACL
#define PRIVCOPY_FILE_OWNER_GROUP 0x040 // Copy owner & group
#define PRIVCOPY_FILE_DIRECTORY 0x080 // Copy directory file like a file
#define PRIVCOPY_FILE_BACKUP_SEMANTICS 0x100 // Use FILE_FLAG_BACKUP_SEMANTICS on open/creates.
#define PRIVCOPY_FILE_SUPERSEDE 0x200 // Replace original dest with source
#define PRIVCOPY_FILE_SKIP_DACL 0x400 // Workaround for csc/roamprofs
#define PRIVCOPY_FILE_VALID_FLAGS (PRIVCOPY_FILE_METADATA|PRIVCOPY_FILE_SACL|PRIVCOPY_FILE_OWNER_GROUP|PRIVCOPY_FILE_DIRECTORY|PRIVCOPY_FILE_SUPERSEDE|PRIVCOPY_FILE_BACKUP_SEMANTICS|PRIVCOPY_FILE_SKIP_DACL)
#define PRIVPROGRESS_REASON_NOT_HANDLED 4
#define PRIVCALLBACK_STREAMS_NOT_SUPPORTED 2
#define PRIVCALLBACK_COMPRESSION_NOT_SUPPORTED 5
#define PRIVCALLBACK_COMPRESSION_FAILED 6
#define PRIVCALLBACK_ENCRYPTION_NOT_SUPPORTED 8
#define PRIVCALLBACK_ENCRYPTION_FAILED 9
#define PRIVCALLBACK_EAS_NOT_SUPPORTED 10
#define PRIVCALLBACK_SPARSE_NOT_SUPPORTED 11
#define PRIVCALLBACK_SPARSE_FAILED 12
#define PRIVCALLBACK_DACL_ACCESS_DENIED 13
#define PRIVCALLBACK_OWNER_GROUP_ACCESS_DENIED 14
#define PRIVCALLBACK_OWNER_GROUP_FAILED 19
#define PRIVCALLBACK_SACL_ACCESS_DENIED 15
#define PRIVCALLBACK_SECURITY_INFORMATION_NOT_SUPPORTED 16
#define PRIVCALLBACK_CANT_ENCRYPT_SYSTEM_FILE 17
#define PRIVMOVE_FILEID_DELETE_OLD_FILE 0x01
#define PRIVMOVE_FILEID_IGNORE_ID_ERRORS 0x02
BOOL APIENTRY PrivMoveFileIdentityW( LPCWSTR lpOldFileName, LPCWSTR lpNewFileName, DWORD dwFlags );
BOOL APIENTRY PrivCopyFileExW( LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, LPVOID lpData OPTIONAL, LPBOOL pbCancel OPTIONAL, DWORD dwCopyFlags ); #endif // (_WIN32_WINNT >= 0x0500)
//#define ACTCTX_FLAG_LIKE_CREATEPROCESS (0x00000100)
BOOL WINAPI CloseProfileUserMapping( VOID );
BOOL WINAPI OpenProfileUserMapping( VOID );
BOOL WINAPI QueryWin31IniFilesMappedToRegistry( IN DWORD Flags, OUT PWSTR Buffer, IN DWORD cchBuffer, OUT LPDWORD cchUsed );
#define WIN31_INIFILES_MAPPED_TO_SYSTEM 0x00000001
#define WIN31_INIFILES_MAPPED_TO_USER 0x00000002
typedef BOOL (WINAPI *PWIN31IO_STATUS_CALLBACK)( IN PWSTR Status, IN PVOID CallbackParameter );
typedef enum _WIN31IO_EVENT { Win31SystemStartEvent, Win31LogonEvent, Win31LogoffEvent } WIN31IO_EVENT;
#define WIN31_MIGRATE_INIFILES 0x00000001
#define WIN31_MIGRATE_GROUPS 0x00000002
#define WIN31_MIGRATE_REGDAT 0x00000004
#define WIN31_MIGRATE_ALL (WIN31_MIGRATE_INIFILES | WIN31_MIGRATE_GROUPS | WIN31_MIGRATE_REGDAT)
DWORD WINAPI QueryWindows31FilesMigration( IN WIN31IO_EVENT EventType );
BOOL WINAPI SynchronizeWindows31FilesAndWindowsNTRegistry( IN WIN31IO_EVENT EventType, IN DWORD Flags, IN PWIN31IO_STATUS_CALLBACK StatusCallBack, IN PVOID CallbackParameter );
typedef struct _VIRTUAL_BUFFER { PVOID Base; PVOID CommitLimit; PVOID ReserveLimit; } VIRTUAL_BUFFER, *PVIRTUAL_BUFFER;
BOOLEAN WINAPI CreateVirtualBuffer( OUT PVIRTUAL_BUFFER Buffer, IN ULONG CommitSize OPTIONAL, IN ULONG ReserveSize OPTIONAL );
int WINAPI VirtualBufferExceptionHandler( IN ULONG ExceptionCode, IN PEXCEPTION_POINTERS ExceptionInfo, IN OUT PVIRTUAL_BUFFER Buffer );
BOOLEAN WINAPI ExtendVirtualBuffer( IN PVIRTUAL_BUFFER Buffer, IN PVOID Address );
BOOLEAN WINAPI TrimVirtualBuffer( IN PVIRTUAL_BUFFER Buffer );
BOOLEAN WINAPI FreeVirtualBuffer( IN PVIRTUAL_BUFFER Buffer );
//
// filefind stucture shared with ntvdm, jonle
// see mvdm\dos\dem\demsrch.c
//
typedef struct _FINDFILE_HANDLE { HANDLE DirectoryHandle; PVOID FindBufferBase; PVOID FindBufferNext; ULONG FindBufferLength; ULONG FindBufferValidLength; RTL_CRITICAL_SECTION FindBufferLock; } FINDFILE_HANDLE, *PFINDFILE_HANDLE;
#define BASE_FIND_FIRST_DEVICE_HANDLE (HANDLE)1
WINBASEAPI BOOL WINAPI GetDaylightFlag(VOID);
WINBASEAPI BOOL WINAPI SetDaylightFlag( BOOL fDaylight );
WINBASEAPI BOOL WINAPI FreeLibrary16( HINSTANCE hLibModule );
WINBASEAPI FARPROC WINAPI GetProcAddress16( HINSTANCE hModule, LPCSTR lpProcName );
WINBASEAPI HINSTANCE WINAPI LoadLibrary16( LPCSTR lpLibFileName );
WINBASEAPI BOOL APIENTRY NukeProcess( DWORD ppdb, UINT uExitCode, DWORD ulFlags);
WINBASEAPI HGLOBAL WINAPI GlobalAlloc16( UINT uFlags, DWORD dwBytes );
WINBASEAPI LPVOID WINAPI GlobalLock16( HGLOBAL hMem );
WINBASEAPI BOOL WINAPI GlobalUnlock16( HGLOBAL hMem );
WINBASEAPI HGLOBAL WINAPI GlobalFree16( HGLOBAL hMem );
WINBASEAPI DWORD WINAPI GlobalSize16( HGLOBAL hMem );
WINBASEAPI DWORD WINAPI RegisterServiceProcess( IN DWORD dwProcessId, IN DWORD dwServiceType );
#define RSP_UNREGISTER_SERVICE 0x00000000
#define RSP_SIMPLE_SERVICE 0x00000001
WINBASEAPI VOID WINAPI ReinitializeCriticalSection( IN LPCRITICAL_SECTION lpCriticalSection );
//
// New Multi-User specific routines to support per session
// network driver mappings. Related to Wksvc changes
//
WINBASEAPI BOOL WINAPI DosPathToSessionPathA( IN DWORD SessionId, IN LPCSTR pInPath, OUT LPSTR *ppOutPath ); WINBASEAPI BOOL WINAPI DosPathToSessionPathW( IN DWORD SessionId, IN LPCWSTR pInPath, OUT LPWSTR *ppOutPath );
//terminal server time zone support
BOOL WINAPI SetClientTimeZoneInformation( IN CONST TIME_ZONE_INFORMATION *ptzi );
#ifdef UNICODE
#define DosPathToSessionPath DosPathToSessionPathW
#else
#define DosPathToSessionPath DosPathToSessionPathA
#endif // !UNICODE
#define COMPLUS_ENABLE_64BIT 0x00000001
#define COMPLUS_INSTALL_FLAGS_INVALID (~(COMPLUS_ENABLE_64BIT))
ULONG WINAPI GetComPlusPackageInstallStatus( VOID );
BOOL WINAPI SetComPlusPackageInstallStatus( ULONG ComPlusPackage ); #ifdef __cplusplus
} #endif
#endif // ndef _WINBASEP_
|