static const VDM_MENUITEM VdmMenuItems[] =
{
- { IDS_VDM_QUIT, NULL, ID_VDM_QUIT },
+ { IDS_VDM_DUMPMEM, NULL, ID_VDM_DUMPMEM },
+ { IDS_VDM_QUIT , NULL, ID_VDM_QUIT },
{ 0, NULL, 0 } /* End of list */
};
ShowPointer = !ShowPointer;
break;
+ case ID_VDM_DUMPMEM:
+ DumpMemory();
+ break;
+
case ID_VDM_QUIT:
/* Stop the VDM */
EmulatorTerminate();
CHAR PifFile[MAX_PATH];
CHAR Desktop[MAX_PATH];
CHAR Title[MAX_PATH];
- CHAR Env[MAX_PATH];
+ ULONG EnvSize = 256;
+ PVOID Env = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, EnvSize);
UNREFERENCED_PARAMETER(Parameter);
+ ASSERT(Env != NULL);
do
{
CommandInfo.Title = Title;
CommandInfo.TitleLen = sizeof(Title);
CommandInfo.Env = Env;
- CommandInfo.EnvLen = sizeof(Env);
+ CommandInfo.EnvLen = EnvSize;
if (First) CommandInfo.VDMState |= VDM_FLAG_FIRST_TASK;
- /* Wait for the next available VDM */
- if (!GetNextVDMCommand(&CommandInfo)) break;
+ if (!GetNextVDMCommand(&CommandInfo))
+ {
+ if (CommandInfo.EnvLen > EnvSize)
+ {
+ /* Expand the environment size */
+ EnvSize = CommandInfo.EnvLen;
+ Env = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Env, EnvSize);
+
+ continue;
+ }
+
+ break;
+ }
/* Start the process from the command line */
DPRINT1("Starting '%s' ('%s')...\n", AppName, CmdLine);
}
while (AcceptCommands);
+ HeapFree(GetProcessHeap(), 0, Env);
return 0;
}
#endif