Saveliy Tretiakov saveliyt@mail.ru: - Implemented CommConfigDialogA and CommConfigDialogW - Removed @unimplemented comments for some implemented functions Modified: trunk/reactos/lib/kernel32/misc/comm.c _____
Modified: trunk/reactos/lib/kernel32/misc/comm.c --- trunk/reactos/lib/kernel32/misc/comm.c 2005-04-06 17:08:17 UTC (rev 14528) +++ trunk/reactos/lib/kernel32/misc/comm.c 2005-04-06 17:40:25 UTC (rev 14529) @@ -14,6 +14,7 @@
* KJK (11/02/2003) implemented BuildCommDCB & BuildCommDCBAndTimeouts * ST (21/03/2005) implemented GetCommProperties * ST (24/03/2005) implemented ClearCommError. Corrected many functions. + * ST (05/04/2005) implemented CommConfigDialog * */
@@ -584,7 +585,7 @@ }
/* - * @unimplemented + * @implemented */ BOOL STDCALL @@ -707,7 +708,7 @@
/* - * @unimplemented + * @implemented */ BOOL STDCALL @@ -736,7 +737,7 @@ }
/* - * @unimplemented + * @implemented */ BOOL STDCALL @@ -747,7 +748,7 @@
/* - * @unimplemented + * @implemented */ BOOL STDCALL @@ -833,26 +834,68 @@
/* - * @unimplemented + * @implemented */ BOOL STDCALL CommConfigDialogA(LPCSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC) { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; + BOOL (STDCALL *drvCommDlgA)(LPCSTR, HWND, LPCOMMCONFIG); + HMODULE hSerialuiDll; + BOOL result; + + //FIXME: Get dll name from registry. (setupapi needed) + if(!(hSerialuiDll = LoadLibraryW(L"serialui.dll"))) + { + DPRINT("CommConfigDialogA: serialui.dll not found.\n"); + return FALSE; + } + + drvCommDlgA = GetProcAddress(hSerialuiDll, "drvCommConfigDialogA"); + + if(!drvCommDlgA) + { + DPRINT("CommConfigDialogA: serialui does not export drvCommConfigDialogA\n"); + FreeLibrary(hSerialuiDll); + return FALSE; + } + + result = drvCommDlgA(lpszName, hWnd, lpCC); + FreeLibrary(hSerialuiDll); + return result; }
/* - * @unimplemented + * @implemented */ BOOL STDCALL CommConfigDialogW(LPCWSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC) { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; + BOOL (STDCALL *drvCommDlgW)(LPCWSTR, HWND, LPCOMMCONFIG); + HMODULE hSerialuiDll; + BOOL result; + + //FIXME: Get dll name from registry. (setupapi needed) + if(!(hSerialuiDll = LoadLibraryW(L"serialui.dll"))) + { + DPRINT("CommConfigDialogW: serialui.dll not found.\n"); + return FALSE; + } + + drvCommDlgW = GetProcAddress(hSerialuiDll, "drvCommConfigDialogW"); + + if(!drvCommDlgW) + { + DPRINT("CommConfigDialogW: serialui does not export drvCommConfigDialogW\n"); + FreeLibrary(hSerialuiDll); + return FALSE; + } + + result = drvCommDlgW(lpszName, hWnd, lpCC); + FreeLibrary(hSerialuiDll); + return result; }