Start source tree (final, I hope!) restructuration. Part 1/X
[reactos.git] / reactos / win32ss / base / basesrv / vdm.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Base API Server DLL
4 * FILE: subsystems/win/basesrv/vdm.h
5 * PURPOSE: VDM Definitions
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 */
8
9 #ifndef __VDM_H__
10 #define __VDM_H__
11
12 #include <win/vdm.h>
13
14 /* DEFINITIONS ****************************************************************/
15
16 #define VDM_POLICY_KEY_NAME L"Software\\Policies\\Microsoft\\Windows\\AppCompat"
17 #define VDM_DISALLOWED_VALUE_NAME L"VDMDisallowed"
18
19 typedef struct _VDM_CONSOLE_RECORD
20 {
21 LIST_ENTRY Entry;
22 HANDLE ConsoleHandle;
23 HANDLE ProcessHandle;
24 HANDLE ServerEvent;
25 HANDLE ClientEvent;
26 ULONG ProcessId;
27 ULONG ReenterCount;
28 PCHAR CurrentDirs;
29 ULONG CurDirsLength;
30 ULONG SessionId;
31 LIST_ENTRY DosListHead;
32 } VDM_CONSOLE_RECORD, *PVDM_CONSOLE_RECORD;
33
34 typedef struct _VDM_DOS_RECORD
35 {
36 LIST_ENTRY Entry;
37 USHORT State;
38 ULONG ExitCode;
39 HANDLE ServerEvent;
40 HANDLE ClientEvent;
41 PVDM_COMMAND_INFO CommandInfo;
42 } VDM_DOS_RECORD, *PVDM_DOS_RECORD;
43
44 /* FUNCTIONS ******************************************************************/
45
46 NTSTATUS NTAPI BaseSrvGetConsoleRecord(HANDLE ConsoleHandle, PVDM_CONSOLE_RECORD *Record);
47 NTSTATUS NTAPI GetConsoleRecordBySessionId(ULONG TaskId, PVDM_CONSOLE_RECORD *Record);
48 ULONG NTAPI GetNextDosSesId(VOID);
49 BOOLEAN NTAPI BaseSrvIsVdmAllowed(VOID);
50 NTSTATUS NTAPI BaseSrvCreatePairWaitHandles(PHANDLE ServerEvent, PHANDLE ClientEvent);
51 VOID NTAPI BaseSrvFreeVDMInfo(PVDM_COMMAND_INFO CommandInfo);
52 VOID NTAPI BaseSrvCleanupVDMResources(IN PCSR_PROCESS CsrProcess);
53 BOOLEAN NTAPI BaseSrvCopyCommand(PBASE_CHECK_VDM CheckVdmRequest, PVDM_DOS_RECORD DosRecord);
54 NTSTATUS NTAPI BaseSrvFillCommandInfo(
55 PVDM_COMMAND_INFO CommandInfo,
56 PBASE_GET_NEXT_VDM_COMMAND Message
57 );
58 VOID NTAPI BaseInitializeVDM(VOID);
59
60 #endif // __VDM_H__