Author: jimtabor Date: Thu Aug 16 04:12:10 2007 New Revision: 28367
URL: http://svn.reactos.org/svn/reactos?rev=28367&view=rev Log: Implemented a handfull of easy Eng APIs.
Modified: trunk/reactos/dll/win32/gdi32/misc/stubs.c
Modified: trunk/reactos/dll/win32/gdi32/misc/stubs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/misc/stubs.... ============================================================================== --- trunk/reactos/dll/win32/gdi32/misc/stubs.c (original) +++ trunk/reactos/dll/win32/gdi32/misc/stubs.c Thu Aug 16 04:12:10 2007 @@ -2545,8 +2545,7 @@ STDCALL EngAcquireSemaphore ( IN HSEMAPHORE hsem ) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + RtlEnterCriticalSection((PRTL_CRITICAL_SECTION)hsem); }
@@ -2678,9 +2677,10 @@ STDCALL EngCreateSemaphore ( VOID ) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; + PRTL_CRITICAL_SECTION CritSect = RtlAllocateHeap(GetProcessHeap(), 0, sizeof(RTL_CRITICAL_SECTION)); + if (!CritSect) return NULL; + RtlInitializeCriticalSection( CritSect ); + return (HSEMAPHORE)CritSect; }
/* @@ -2721,8 +2721,10 @@ STDCALL EngDeleteSemaphore ( IN HSEMAPHORE hsem ) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + if (!hsem) return; + + RtlDeleteCriticalSection( (PRTL_CRITICAL_SECTION) hsem ); + RtlFreeHeap( GetProcessHeap(), 0, hsem ); }
/* @@ -2877,19 +2879,33 @@ IN PCHAR MultiByteString, IN ULONG BytesInMultiByteString) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + RtlMultiByteToUnicodeN( + UnicodeString, + MaxBytesInUnicodeString, + BytesInUnicodeString, + MultiByteString, + BytesInMultiByteString + ); }
/* * @unimplemented */ INT STDCALL -EngMultiByteToWideChar(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString) -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; +EngMultiByteToWideChar(UINT CodePage, + LPWSTR WideCharString, + INT BytesInWideCharString, + LPSTR MultiByteString, + INT BytesInMultiByteString) +{ + return MultiByteToWideChar( + CodePage, + 0, + MultiByteString, + BytesInMultiByteString, + WideCharString, + (BytesInWideCharString/sizeof(WCHAR)) /* Bytes to (in WCHARs) */ + ); }
/* @@ -2919,14 +2935,12 @@ }
/* - * @unimplemented + * @implemented */ BOOL STDCALL EngQueryEMFInfo(HDEV hdev,EMFINFO *pEMFInfo) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; + return FALSE; }
/* @@ -2935,8 +2949,16 @@ VOID STDCALL EngQueryLocalTime(PENG_TIME_FIELDS etf) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + SYSTEMTIME SystemTime; + GetLocalTime( &SystemTime ); + etf->usYear = SystemTime.wYear; + etf->usMonth = SystemTime.wMonth; + etf->usWeekday = SystemTime.wDayOfWeek; + etf->usDay = SystemTime.wDay; + etf->usHour = SystemTime.wHour; + etf->usMinute = SystemTime.wMinute; + etf->usSecond = SystemTime.wSecond; + etf->usMilliseconds = SystemTime.wMilliseconds; }
/* @@ -2946,8 +2968,7 @@ STDCALL EngReleaseSemaphore ( IN HSEMAPHORE hsem ) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + RtlLeaveCriticalSection( (PRTL_CRITICAL_SECTION) hsem); }
@@ -3024,8 +3045,13 @@ IN PWSTR UnicodeString, IN ULONG BytesInUnicodeString) { - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + RtlUnicodeToMultiByteN( + MultiByteString, + MaxBytesInMultiByteString, + BytesInMultiByteString, + UnicodeString, + BytesInUnicodeString + ); }
/* @@ -3042,11 +3068,21 @@ * @unimplemented */ INT STDCALL -EngWideCharToMultiByte(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString) -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; +EngWideCharToMultiByte( UINT CodePage, + LPWSTR WideCharString, + INT BytesInWideCharString, + LPSTR MultiByteString, + INT BytesInMultiByteString) +{ + return WideCharToMultiByte( + CodePage, + 0, + WideCharString, + (BytesInWideCharString/sizeof(WCHAR)), /* Bytes to (in WCHARs) */ + MultiByteString, + BytesInMultiByteString, + NULL, + NULL); }
/*