+ DWORD dwOldMode;
+ DWORD dwRead = 0;
+ HANDLE hFile;
+ LPWSTR p;
+ PCHAR pBuf;
+
+ pBuf = HeapAlloc(GetProcessHeap(), 0, dwLength - 1);
+ ZeroMemory(lpInput, dwLength * sizeof(WCHAR));
+ hFile = GetStdHandle(STD_INPUT_HANDLE);
+ GetConsoleMode(hFile, &dwOldMode);
+
+ SetConsoleMode(hFile, ENABLE_LINE_INPUT | (bEcho ? ENABLE_ECHO_INPUT : 0));
+
+ ReadFile(hFile, (PVOID)pBuf, dwLength - 1, &dwRead, NULL);
+
+ MultiByteToWideChar(CP_OEMCP, 0, pBuf, dwRead, lpInput, dwLength - 1);
+ HeapFree(GetProcessHeap(), 0, pBuf);