2020-09-30 17:12:29 +02:00

151 lines
2.5 KiB
C

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
vdm.h
Abstract:
This module contains MVDM related interface prototypes
Author:
Sudeep Bharati (sudeepb) 04-Jan-1992
Revision History:
--*/
BOOL
BaseGetVdmConfigInfo(
IN LPCWSTR CommandLine,
IN ULONG DosSeqId,
IN ULONG BinaryType,
IN PUNICODE_STRING CmdLineString,
OUT PULONG VdmSize
);
ULONG
BaseIsDosApplication(
IN PUNICODE_STRING PathName,
IN NTSTATUS Status
);
BOOL
BaseUpdateVDMEntry(
IN ULONG UpdateIndex,
IN OUT HANDLE *WaitHandle,
IN ULONG IndexInfo,
IN ULONG BinaryType
);
BOOL
BaseCheckVDM(
IN ULONG BinaryType,
IN PCWCH lpApplicationName,
IN PCWCH lpCommandLine,
IN PCWCH lpCurrentDirectory,
IN ANSI_STRING *pAnsiStringEnv,
IN PBASE_API_MSG m,
IN OUT PULONG iTask,
IN DWORD dwCreationFlags,
LPSTARTUPINFOW lpStartupInfo
);
VOID
BaseCloseStandardHandle(
IN PVDMINFO pVDMInfo
);
BOOL
BaseGetVDMKeyword(
LPWSTR KeywordLine,
LPSTR KeywordLineValue,
LPDWORD KeywordLineSize,
LPWSTR KeywordSize,
LPDWORD VdmSize
);
BOOL
BaseCheckForVDM(
IN HANDLE hProcess,
OUT LPDWORD lpExitCode
);
BOOL
GetVDMConfigValue(
HANDLE hKey,
LPWSTR Keyword,
LPWSTR UnicodeBuffer
);
BOOL
BaseSearchLongName_U(
LPCWSTR lpPathName,
LPWSTR *ppLongName
);
BOOL
BaseCreateVDMEnvironment(
LPWSTR lpEnvironment,
ANSI_STRING *pAStringEnv,
UNICODE_STRING *pUStringEnv
);
BOOL
BaseDestroyVDMEnvironment(
ANSI_STRING *pAStringEnv,
UNICODE_STRING *pUStringEnv
);
UINT
BaseGetEnvNameType_U(
WCHAR * Name,
DWORD NameLength
);
#define MAX_VDM_NESTING 8
#define DEFAULT_ENV_LENGTH 256
#define MAX_VDM_CFG_LINE 256
#define FULL_INFO_BUFFER_SIZE (sizeof(KEY_VALUE_FULL_INFORMATION) + MAX_VDM_CFG_LINE)
#define WOW_ROOT \
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\WOW"
#define CMDLINE L"cmdline"
#define DOSSIZE L"size"
#define WOWCMDLINE L"wowcmdline"
#define WOWSIZE L"wowsize"
#define CHECKDOSCONSOLE 0
#define CHECKWOWCONSOLE 1
#define ASSUMENOCONSOLE 2
extern HANDLE hVDM[];
#define ENV_NAME_PATH L"PATH"
#define ENV_NAME_WINDIR L"WINDIR"
#define ENV_NAME_SYSTEMROOT L"SYSTEMROOT"
// ENV_NAME_TYPE
#define ENV_NAME_TYPE_NO_PATH 1
#define ENV_NAME_TYPE_SINGLE_PATH 2
#define ENV_NAME_TYPE_MULTIPLE_PATH 3
#define STD_ENV_NAME_COUNT 3
typedef struct _ENV_INFO {
UINT NameType;
UINT NameLength;
WCHAR *Name;
} ENV_INFO, * PENV_INFO;