/***************************************************************************** * * (C) Copyright MICROSOFT Corp., 1994, 1995 * * Title: WSHOICTL.H - IOCTL interface for Wshell * * Version: 4.00 * * Date: 30-Nov-1988 * * Author: RAL * *---------------------------------------------------------------------------- * * Change log: * * DATE REV DESCRIPTION * ----------- --- ---------------------------------------------------------- * 01-Aug-1994 RAL Original * 05-Apr-1995 [stevecat] NT and Unicode port * *****************************************************************************/ #ifndef _WSHIOCTL_H #define _WSHIOCTL_H #define SHELLFILENAME TEXT("\\\\.\\SHELL") // // Flags for _SHELL_SuggestSingleMSDOSMode // // SSAMFLAG_KILLVM // A fatal application error has occurred. Display a warning box // unconditionally. Regardless of the answer, terminate the VM. // If this bit is set, the call does not return. // // SSAMFLAG_TIMER // Not used. Sorry. // // SSAM_REQREALMODE // App requires *real* mode, not V86 mode, not EMM stuff, not // QEMM. Just pure unadulterated real mode. Also known as // SSAM_COMANCHE, because Comanche does an "lgdt" to enter // protected mode without checking if it is safe to do so. // This flag is inspected by AppWiz to decide how to set up // the config.sys and autoexec.bat. // // SSAM_KILLUNLESSTOLD // Suggest Single MS-DOS mode (unless suppressed via PIF), and // if the answer is "Okay", then kill the VM. If the user // says, "Keep running", then let it stay. // // SSAM_FROMREGLIST // This app was run from a command prompt, triggered by registry // settings. Just re-execute it in its own VM so that APPS.INF // settings will take effect. // // SSAM_FAILEDAPI // This app just made an API call that was unsuccessful or // unsupported. If the app terminates within 0.1 second, // then suggest single-app mode. If the app continues // execution, then don't suggest. // #define SSAMFLAG_KILLVM 0x0000001 #define SSAMFLAG_TIMER 0x0000002 #define SSAMFLAG_REQREALMODE 0x0000004 #define SSAMFLAG_KILLUNLESSTOLD 0x0000008 #define SSAMFLAG_FROMREGLIST 0x0000010 #define SSAMFLAG_FAILEDAPI 0x0000020 // // IOCTL codes // #define WSHIOCTL_GETVERSION 0 #define WSHIOCTL_BLUESCREEN 1 #define WSHIOCTL_GET1APPINFO 2 #define WSHIOCTL_SIGNALSEM 3 #define WSHIOCTL_MAX 4 /* Remember, _MAX = _LIMIT + 1 */ // // Result codes // #define SSR_CONTINUE 0 #define SSR_CLOSEVM 1 #define SSR_KILLAPP 2 // // Sizes for strings // #define MAXVMTITLESIZE 32 #define MAXVMPROGSIZE 64 #define MAXVMCMDSIZE 64 #define MAXVMDIRSIZE 64 #define MAXPIFPATHSIZE 260 typedef struct _SINGLEAPPSTRUC { /* shex */ DWORD SSA_dwFlags; DWORD SSA_VMHandle; DWORD_PTR SSA_ResultPtr; DWORD SSA_Semaphore; TCHAR SSA_PIFPath[MAXPIFPATHSIZE]; TCHAR SSA_VMTitle[MAXVMTITLESIZE]; TCHAR SSA_ProgName[MAXVMPROGSIZE]; TCHAR SSA_CommandLine[MAXVMCMDSIZE]; TCHAR SSA_CurDir[MAXVMCMDSIZE]; } SINGLEAPPSTRUC; // // Structures for WSHIOCTL_BLUESCREEN. // // lpvInBuffer must point to a BLUESCREENINFO structure. // lpvOutBuffer must point to a DWORD which receives the message box result. // The message box result is an IDXX value, as defined in windows.h. // /* H2INCSWITCHES -t */ typedef struct _BLUESCREENINFO { /* bsi */ TCHAR *pszText; /* Message text (OEM character set) */ TCHAR *pszTitle; /* Message title (OEM character set) */ /* NULL means "Windows" */ DWORD flStyle; /* Message box flags (see windows.h) */ /* Add'l flags defined in ddk\inc\shell.h */ } BLUESCREENINFO; /* H2INCSWITCHES -t- */ #endif // _WSHIOCTL_H