470 lines
9.7 KiB
C
470 lines
9.7 KiB
C
|
|
/*++ 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_
|