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;
 }