windows-nt/Source/XPSP1/NT/base/win32/fusion/sxs/simplefp.h

66 lines
1.3 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
SimpleFp.h
Abstract:
simple FILE*, instead of msvcrt.dll
Author:
Xiaoyu Wu(xiaoyuw) July 2000
Revision History:
--*/
#pragma once
#include <stdio.h>
class CSimpleFileStream
{
public:
HRESULT fopen(PCSTR pFileName); // can be a file name, "stderr", "stdout"
HRESULT fclose();
static HRESULT printf(const WCHAR *format, ...)
{
HRESULT hr = NOERROR;
va_list ap;
WCHAR rgchBuffer[2048];
int cch;
DWORD cchWritten;
va_start(ap, format);
cch = _vsnwprintf(rgchBuffer, NUMBER_OF(rgchBuffer), format, ap);
rgchBuffer[NUMBER_OF(rgchBuffer) - 1] = 0;
va_end(ap);
if (cch < 0) {// error case
hr = E_UNEXPECTED;
goto Exit;
}
if( !WriteConsole(GetStdHandle(STD_ERROR_HANDLE), rgchBuffer, cch, &cchWritten, NULL)){
DWORD dwError = ::FusionpGetLastWin32Error();
hr = HRESULT_FROM_WIN32(dwError);
goto Exit;
}
hr = NOERROR;
Exit :
return hr;
}
HRESULT fprintf(const char *format, ...);
HRESULT fwrite(const VOID*, SIZE_T, SIZE_T);
CSimpleFileStream(PCSTR pFileName);
~CSimpleFileStream();
private:
HANDLE m_hFile;
};