ReactOS  0.4.14-dev-77-gd9e7c48
ntvdm.h File Reference
#include <stdio.h>
#include <stdarg.h>
#include <wchar.h>
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <wincon.h>
#include <winnls.h>
#include <winreg.h>
#include <winuser.h>
#include <commdlg.h>
#include <subsys/win/vdm.h>
#include <vddsvc.h>
#include <ndk/kefuncs.h>
#include <ndk/mmfuncs.h>
#include <ndk/obfuncs.h>
#include <ndk/rtlfuncs.h>
#include <ndk/rtltypes.h>
#include <pseh/pseh2.h>
Include dependency graph for ntvdm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _NTVDM_SETTINGS
 

Macros

#define WIN32_NO_STATUS
 
#define NO_NTVDD_COMPAT
 
#define NTOS_MODE_USER
 
#define NULL32   0
 

Typedefs

typedef struct _NTVDM_SETTINGS NTVDM_SETTINGS
 
typedef struct _NTVDM_SETTINGSPNTVDM_SETTINGS
 
typedef VOID(* CHAR_PRINT) (IN CHAR Character)
 

Functions

DWORD WINAPI SetLastConsoleEventActive (VOID)
 
VOID DisplayMessage (IN LPCWSTR Format,...)
 
VOID PrintMessageAnsi (IN CHAR_PRINT CharPrint, IN LPCSTR Format,...)
 
VOID UpdateVdmMenuDisks (VOID)
 
BOOL ConsoleAttach (VOID)
 
VOID ConsoleDetach (VOID)
 
VOID ConsoleReattach (HANDLE ConOutHandle)
 
BOOL IsConsoleHandle (HANDLE hHandle)
 
VOID MenuEventHandler (PMENU_EVENT_RECORD MenuEvent)
 
VOID FocusEventHandler (PFOCUS_EVENT_RECORD FocusEvent)
 

Variables

NTVDM_SETTINGS GlobalSettings
 
INT NtVdmArgc
 
WCHAR ** NtVdmArgv
 
HWND hConsoleWnd
 

Macro Definition Documentation

◆ NO_NTVDD_COMPAT

#define NO_NTVDD_COMPAT

Definition at line 33 of file ntvdm.h.

◆ NTOS_MODE_USER

#define NTOS_MODE_USER

Definition at line 38 of file ntvdm.h.

◆ NULL32

#define NULL32   0

Definition at line 70 of file ntvdm.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 19 of file ntvdm.h.

Typedef Documentation

◆ CHAR_PRINT

typedef VOID(* CHAR_PRINT) (IN CHAR Character)

Definition at line 96 of file ntvdm.h.

◆ NTVDM_SETTINGS

◆ PNTVDM_SETTINGS

Function Documentation

◆ ConsoleAttach()

BOOL ConsoleAttach ( VOID  )

Definition at line 398 of file console.c.

399 {
400  /* Save the original input and output console modes */
403  {
406  wprintf(L"FATAL: Cannot save console in/out modes\n");
407  return FALSE;
408  }
409 
410  /* Set the console input mode */
413 
414  /* Set the console output mode */
415  // SetConsoleMode(ConsoleOutput, ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT);
416 
417  /* Initialize the UI */
418  ConsoleInitUI();
419 
420  return TRUE;
421 }
static DWORD OrgConsoleOutputMode
Definition: console.c:18
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:398
static VOID ConsoleInitUI(VOID)
Definition: console.c:382
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
Definition: console.c:1571
#define wprintf(...)
Definition: whoami.c:18
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
Definition: console.c:1608
static VOID EnableExtraHardware(HANDLE ConsoleInput)
Definition: console.c:318
static const WCHAR L[]
Definition: oid.c:1250
#define ENABLE_WINDOW_INPUT
Definition: wincon.h:78
static HANDLE ConsoleOutput
Definition: console.c:17
static DWORD OrgConsoleInputMode
Definition: console.c:18

Referenced by ConsoleInit(), and DosProcessConsoleAttach().

◆ ConsoleDetach()

VOID ConsoleDetach ( VOID  )

Definition at line 424 of file console.c.

425 {
426  /* Cleanup the UI */
428 
429  /* Restore the original input and output console modes */
432 }
static DWORD OrgConsoleOutputMode
Definition: console.c:18
static VOID ConsoleCleanupUI(VOID)
Definition: console.c:389
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
Definition: console.c:1608
static HANDLE ConsoleOutput
Definition: console.c:17
static DWORD OrgConsoleInputMode
Definition: console.c:18

Referenced by ConsoleCleanup(), and DosProcessConsoleDetach().

◆ ConsoleReattach()

VOID ConsoleReattach ( HANDLE  ConOutHandle)

Definition at line 435 of file console.c.

436 {
437  DestroyVdmMenu();
438  CurrentConsoleOutput = ConOutHandle;
439  CreateVdmMenu(ConOutHandle);
440 
441  /* Synchronize mouse cursor display with console screenbuffer switches */
443 }
static BOOL CaptureMouse
Definition: console.c:23
static HANDLE CurrentConsoleOutput
Definition: console.c:14
static VOID CreateVdmMenu(HANDLE ConOutHandle)
Definition: console.c:203
static VOID DestroyVdmMenu(VOID)
Definition: console.c:274
static VOID CaptureMousePointer(HANDLE ConOutHandle, BOOLEAN Capture)
Definition: console.c:288

Referenced by SetActiveScreenBuffer().

◆ DisplayMessage()

VOID DisplayMessage ( IN LPCWSTR  Format,
  ... 
)

Definition at line 353 of file ntvdm.c.

354 {
355 #ifndef WIN2K_COMPLIANT
356  WCHAR StaticBuffer[256];
357  LPWSTR Buffer = StaticBuffer; // Use the static buffer by default.
358 #else
359  WCHAR Buffer[2048]; // Large enough. If not, increase it by hand.
360 #endif
361  size_t MsgLen;
362  va_list args;
363 
364  va_start(args, Format);
365 
366 #ifndef WIN2K_COMPLIANT
367  /*
368  * Retrieve the message length and if it is too long, allocate
369  * an auxiliary buffer; otherwise use the static buffer.
370  * The string is built to be NULL-terminated.
371  */
372  MsgLen = _vscwprintf(Format, args);
373  if (MsgLen >= ARRAYSIZE(StaticBuffer))
374  {
375  Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, (MsgLen + 1) * sizeof(WCHAR));
376  if (Buffer == NULL)
377  {
378  /* Allocation failed, use the static buffer and display a suitable error message */
379  Buffer = StaticBuffer;
380  Format = L"DisplayMessage()\nOriginal message is too long and allocating an auxiliary buffer failed.";
381  MsgLen = wcslen(Format);
382  }
383  }
384 #else
385  MsgLen = ARRAYSIZE(Buffer) - 1;
386 #endif
387 
388  RtlZeroMemory(Buffer, (MsgLen + 1) * sizeof(WCHAR));
389  _vsnwprintf(Buffer, MsgLen, Format, args);
390 
391  va_end(args);
392 
393  /* Display the message */
394  DPRINT1("\n\nNTVDM Subsystem\n%S\n\n", Buffer);
395  MessageBoxW(hConsoleWnd, Buffer, L"NTVDM Subsystem", MB_OK);
396 
397 #ifndef WIN2K_COMPLIANT
398  /* Free the buffer if needed */
399  if (Buffer != StaticBuffer) RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
400 #endif
401 }
HWND hConsoleWnd
Definition: console.c:20
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:606
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
Definition: match.c:390
#define va_end(ap)
Definition: acmsvcex.h:90
smooth NULL
Definition: ftsmooth.c:416
char * va_list
Definition: acmsvcex.h:78
Definition: bufpool.h:45
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:588
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const WCHAR L[]
Definition: oid.c:1250
_Check_return_ _CRTIMP int __cdecl _vscwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define MB_OK
Definition: winuser.h:784
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
#define DPRINT1
Definition: precomp.h:8
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define args
Definition: format.c:66
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

◆ FocusEventHandler()

VOID FocusEventHandler ( PFOCUS_EVENT_RECORD  FocusEvent)

Definition at line 600 of file console.c.

601 {
602  /*
603  * If the mouse is captured, release it or recapture it
604  * when we lose or regain focus, respectively.
605  */
606  if (!CaptureMouse) return;
608 }
static BOOL CaptureMouse
Definition: console.c:23
static HANDLE CurrentConsoleOutput
Definition: console.c:14
static VOID CaptureMousePointer(HANDLE ConOutHandle, BOOLEAN Capture)
Definition: console.c:288

Referenced by ConsoleEventThread().

◆ IsConsoleHandle()

BOOL IsConsoleHandle ( HANDLE  hHandle)

Definition at line 503 of file console.c.

504 {
505  DWORD dwMode;
506 
507  /* Check whether the handle may be that of a console... */
508  if ((GetFileType(hHandle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR)
509  return FALSE;
510 
511  /*
512  * It may be. Perform another test... The idea comes from the
513  * MSDN description of the WriteConsole API:
514  *
515  * "WriteConsole fails if it is used with a standard handle
516  * that is redirected to a file. If an application processes
517  * multilingual output that can be redirected, determine whether
518  * the output handle is a console handle (one method is to call
519  * the GetConsoleMode function and check whether it succeeds).
520  * If the handle is a console handle, call WriteConsole. If the
521  * handle is not a console handle, the output is redirected and
522  * you should call WriteFile to perform the I/O."
523  */
524  return GetConsoleMode(hHandle, &dwMode);
525 }
#define FILE_TYPE_REMOTE
Definition: winbase.h:259
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
Definition: console.c:1571
DWORD WINAPI GetFileType(HANDLE hFile)
Definition: fileinfo.c:419
#define FILE_TYPE_CHAR
Definition: winbase.h:257
unsigned long DWORD
Definition: ntddk_ex.h:95

Referenced by ConRingBell().

◆ MenuEventHandler()

VOID MenuEventHandler ( PMENU_EVENT_RECORD  MenuEvent)

Definition at line 527 of file console.c.

528 {
529  switch (MenuEvent->dwCommandId)
530  {
531  /*
532  * System-defined menu commands
533  */
534 
535  case WM_INITMENU:
536  case WM_MENUSELECT:
537  {
538  /*
539  * If the mouse is captured, release it or recapture it
540  * when the menu opens or closes, respectively.
541  */
542  if (!CaptureMouse) break;
544  break;
545  }
546 
547 
548  /*
549  * User-defined menu commands
550  */
551 
552  case ID_CAPTURE_MOUSE:
556  break;
557 
558  case ID_VDM_DUMPMEM_TXT:
559  DumpMemory(TRUE);
560  break;
561 
562  case ID_VDM_DUMPMEM_BIN:
563  DumpMemory(FALSE);
564  break;
565 
566  /* Drive 0 -- Mount */
567  /* Drive 1 -- Mount */
568  case ID_VDM_DRIVES + 0:
569  case ID_VDM_DRIVES + 2:
570  {
571  ULONG DiskNumber = (MenuEvent->dwCommandId - ID_VDM_DRIVES) / 2;
572  MountFloppy(DiskNumber);
573  break;
574  }
575 
576  /* Drive 0 -- Eject */
577  /* Drive 1 -- Eject */
578  case ID_VDM_DRIVES + 1:
579  case ID_VDM_DRIVES + 3:
580  {
581  ULONG DiskNumber = (MenuEvent->dwCommandId - ID_VDM_DRIVES - 1) / 2;
582  EjectFloppy(DiskNumber);
583  break;
584  }
585 
586  case ID_VDM_QUIT:
587  /* Stop the VDM */
588  // EmulatorTerminate();
589 
590  /* Nothing runs, so exit immediately */
591  DPRINT1("Killing NTVDM via console menu!\n");
592  VdmShutdown(TRUE);
593  break;
594 
595  default:
596  break;
597  }
598 }
#define ID_VDM_DUMPMEM_BIN
Definition: resource.h:6
#define TRUE
Definition: types.h:120
VOID EjectFloppy(IN ULONG DiskNumber)
Definition: emulator.c:467
#define ID_VDM_DUMPMEM_TXT
Definition: resource.h:5
#define ID_VDM_DRIVES
Definition: resource.h:10
VOID VdmShutdown(BOOLEAN Immediate)
Definition: ntvdm.c:310
#define ID_VDM_QUIT
Definition: resource.h:7
static BOOL CaptureMouse
Definition: console.c:23
static HANDLE CurrentConsoleOutput
Definition: console.c:14
#define WM_MENUSELECT
Definition: winuser.h:1729
VOID DumpMemory(BOOLEAN TextFormat)
Definition: emulator.c:369
static VOID UpdateVdmMenuMouse(VOID)
Definition: console.c:130
#define WM_INITMENU
Definition: winuser.h:1727
VOID MountFloppy(IN ULONG DiskNumber)
Definition: emulator.c:413
#define DPRINT1
Definition: precomp.h:8
#define ID_CAPTURE_MOUSE
Definition: resource.h:4
unsigned int ULONG
Definition: retypes.h:1
static VOID CaptureMousePointer(HANDLE ConOutHandle, BOOLEAN Capture)
Definition: console.c:288

Referenced by ConsoleEventThread().

◆ PrintMessageAnsi()

VOID PrintMessageAnsi ( IN CHAR_PRINT  CharPrint,
IN LPCSTR  Format,
  ... 
)

Definition at line 409 of file ntvdm.c.

411 {
412  static CHAR CurChar = 0;
413  LPSTR str;
414 
415 #ifndef WIN2K_COMPLIANT
416  CHAR StaticBuffer[256];
417  LPSTR Buffer = StaticBuffer; // Use the static buffer by default.
418 #else
419  CHAR Buffer[2048]; // Large enough. If not, increase it by hand.
420 #endif
421  size_t MsgLen;
422  va_list args;
423 
424  va_start(args, Format);
425 
426 #ifndef WIN2K_COMPLIANT
427  /*
428  * Retrieve the message length and if it is too long, allocate
429  * an auxiliary buffer; otherwise use the static buffer.
430  * The string is built to be NULL-terminated.
431  */
432  MsgLen = _vscprintf(Format, args);
433  if (MsgLen >= ARRAYSIZE(StaticBuffer))
434  {
435  Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, (MsgLen + 1) * sizeof(CHAR));
436  if (Buffer == NULL)
437  {
438  /* Allocation failed, use the static buffer and display a suitable error message */
439  Buffer = StaticBuffer;
440  Format = "DisplayMessageAnsi()\nOriginal message is too long and allocating an auxiliary buffer failed.";
441  MsgLen = strlen(Format);
442  }
443  }
444 #else
445  MsgLen = ARRAYSIZE(Buffer) - 1;
446 #endif
447 
448  RtlZeroMemory(Buffer, (MsgLen + 1) * sizeof(CHAR));
449  _vsnprintf(Buffer, MsgLen, Format, args);
450 
451  va_end(args);
452 
453  /* Display the message */
454  // DPRINT1("\n\nNTVDM DOS32\n%s\n\n", Buffer);
455 
456  MsgLen = strlen(Buffer);
457  str = Buffer;
458  while (MsgLen--)
459  {
460  if (*str == '\n' && CurChar != '\r')
461  CharPrint('\r');
462 
463  CurChar = *str++;
464  CharPrint(CurChar);
465  }
466 
467 #ifndef WIN2K_COMPLIANT
468  /* Free the buffer if needed */
469  if (Buffer != StaticBuffer) RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
470 #endif
471 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char CHAR
Definition: xmlstorage.h:175
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:606
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
char * LPSTR
Definition: xmlstorage.h:182
Definition: match.c:390
#define va_end(ap)
Definition: acmsvcex.h:90
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
char * va_list
Definition: acmsvcex.h:78
Definition: bufpool.h:45
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:588
static TCHAR CurChar
Definition: parser.c:52
_Check_return_ _CRTIMP int __cdecl _vscprintf(_In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
#define _vsnprintf
Definition: xmlstorage.h:202
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
#define args
Definition: format.c:66

Referenced by BiosRomBasic().

◆ SetLastConsoleEventActive()

DWORD WINAPI SetLastConsoleEventActive ( VOID  )

Definition at line 3142 of file console.c.

3143 {
3144  CONSOLE_API_MESSAGE ApiMessage;
3145  PCONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest = &ApiMessage.Data.NotifyLastCloseRequest;
3146 
3147  /* Set the flag used by the console control dispatcher */
3149 
3150  /* Set up the input arguments */
3151  NotifyLastCloseRequest->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
3152 
3153  /* Call CSRSS; just return the NTSTATUS cast to DWORD */
3154  return CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
3155  NULL,
3157  sizeof(*NotifyLastCloseRequest));
3158 }
#define TRUE
Definition: types.h:120
NTSTATUS NTAPI CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, IN CSR_API_NUMBER ApiNumber, IN ULONG DataLength)
Definition: connect.c:365
CONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest
Definition: conmsg.h:909
smooth NULL
Definition: ftsmooth.c:416
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
Definition: csrmsg.h:37
static BOOLEAN LastCloseNotify
Definition: console.c:33
#define NtCurrentPeb()
Definition: FLS.c:20
union _CONSOLE_API_MESSAGE::@3390 Data
#define CONSRV_SERVERDLL_INDEX
Definition: conmsg.h:15

Referenced by ConsoleInit().

◆ UpdateVdmMenuDisks()

VOID UpdateVdmMenuDisks ( VOID  )

Definition at line 146 of file console.c.

147 {
148  UINT_PTR ItemID;
149  USHORT i;
150 
151  WCHAR szNoMedia[100];
152  WCHAR szMenuString1[256], szMenuString2[256];
153 
154  /* Update the disks menu items */
155 
157  IDS_NO_MEDIA,
158  szNoMedia,
159  ARRAYSIZE(szNoMedia));
160 
163  szMenuString1,
164  ARRAYSIZE(szMenuString1));
165 
166  for (i = 0; i < ARRAYSIZE(GlobalSettings.FloppyDisks); ++i)
167  {
168  ItemID = ID_VDM_DRIVES + (2 * i);
169 
170  if (GlobalSettings.FloppyDisks[i].Length != 0 &&
173  {
174  /* Update item text */
175  _snwprintf(szMenuString2, ARRAYSIZE(szMenuString2), szMenuString1, i, GlobalSettings.FloppyDisks[i].Buffer);
176  szMenuString2[ARRAYSIZE(szMenuString2) - 1] = UNICODE_NULL;
177  ModifyMenuW(hConsoleMenu, ItemID, MF_BYCOMMAND | MF_STRING, ItemID, szMenuString2);
178 
179  /* Enable the eject item */
181  }
182  else
183  {
184  /* Update item text */
185  _snwprintf(szMenuString2, ARRAYSIZE(szMenuString2), szMenuString1, i, szNoMedia);
186  szMenuString2[ARRAYSIZE(szMenuString2) - 1] = UNICODE_NULL;
187  ModifyMenuW(hConsoleMenu, ItemID, MF_BYCOMMAND | MF_STRING, ItemID, szMenuString2);
188 
189  /* Disable the eject item */
191  }
192  }
193 }
BOOL WINAPI ModifyMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MF_BYCOMMAND
Definition: winuser.h:202
#define MF_STRING
Definition: winuser.h:138
#define IDS_VDM_MOUNT_FLOPPY
Definition: resource.h:19
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define ID_VDM_DRIVES
Definition: resource.h:10
#define IDS_NO_MEDIA
Definition: resource.h:23
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define UNICODE_NULL
static HMENU hConsoleMenu
Definition: console.c:21
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
smooth NULL
Definition: ftsmooth.c:416
UNICODE_STRING FloppyDisks[2]
Definition: ntvdm.h:78
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MF_ENABLED
Definition: winuser.h:128
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
static const WCHAR L[]
Definition: oid.c:1250
#define GetModuleHandle
Definition: winbase.h:3644
unsigned short USHORT
Definition: pedump.c:61
#define MF_GRAYED
Definition: winuser.h:129
NTVDM_SETTINGS GlobalSettings
Definition: ntvdm.c:25

Referenced by EjectFloppy(), EmulatorInitialize(), MountFloppy(), and UpdateVdmMenu().

Variable Documentation

◆ GlobalSettings

◆ hConsoleWnd

HWND hConsoleWnd

◆ NtVdmArgc

INT NtVdmArgc

Definition at line 28 of file ntvdm.c.

Referenced by DosStart(), and wmain().

◆ NtVdmArgv

WCHAR** NtVdmArgv

Definition at line 29 of file ntvdm.c.

Referenced by DosStart(), and wmain().