[ros-diffs] [fireball] 23032: - Fix a mistake with outputting always non-initialized buffer in a DPRINT1 - Add a branch for stopping the screensaver - Prettify the tracing debug message (it shows now if it's a start or a stop request) - Add a success-check for RegOpenKeyExW too

fireball at svn.reactos.org fireball at svn.reactos.org
Wed Jul 12 23:33:14 CEST 2006


Author: fireball
Date: Thu Jul 13 01:33:14 2006
New Revision: 23032

URL: http://svn.reactos.org/svn/reactos?rev=23032&view=rev
Log:
- Fix a mistake with outputting always non-initialized buffer in a DPRINT1
- Add a branch for stopping the screensaver
- Prettify the tracing debug message (it shows now if it's a start or a stop request)
- Add a success-check for RegOpenKeyExW too

Modified:
    trunk/reactos/subsystems/win32/csrss/win32csr/conio.c

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/conio.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/conio.c?rev=23032&r1=23031&r2=23032&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/conio.c (original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/conio.c Thu Jul 13 01:33:14 2006
@@ -3326,22 +3326,23 @@
 }
 
 CSR_API(CsrStartScreenSaver)
-{                                            
-
-    DPRINT("CsrStartScreenSaver : Start Screen Saver \n");
-    
+{
+
+    DPRINT("CsrStartScreenSaver : %s Screen Saver \n",
+        (Request->Data.StartScreenSaver.Start) ? "Start" : "Stop");
+
     if (Request->Data.StartScreenSaver.Start == TRUE)
     {
         STARTUPINFOW si;
         PROCESS_INFORMATION pi;
         WCHAR szCmdline[MAX_PATH]; 
-        
+
         HKEY hKey;
         WCHAR szBuffer[MAX_PATH];
         DWORD bufferSize = sizeof(szBuffer);
         DWORD varType = REG_SZ;
         LONG result;
-                    
+
         /* FIXME :
            1. Make it unicode and ansi compatible with TCHAR
            
@@ -3356,32 +3357,43 @@
            4. Move the code to winlogon SAS and screen saver must run in
               the secuar desktop. But current our Winlogon does not working
               well with SAS and with Secure desktop, So I (Magnus Olsen aka GreatLord) 
-              add the code here as w3seek recomandete  
+              add the code here as w3seek recommended  
          */
-                       
-	
-         RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop", 0, KEY_ALL_ACCESS, &hKey);
-         result = RegQueryValueExW(hKey, L"SCRNSAVE.EXE", 0, &varType, (LPBYTE)szBuffer, &bufferSize);
-         if(result == ERROR_SUCCESS) 
-         {                                    
-            swprintf(szCmdline, L"%s /s",szBuffer);       
-            DPRINT1("CsrStartScreenSaver : OK %S\n",szCmdline);                             
-	        ZeroMemory( &si, sizeof(si) );
-            si.cb = sizeof(si);
-            ZeroMemory( &pi, sizeof(pi) );                                   
-            if(CreateProcessW( NULL, szCmdline, NULL, NULL, FALSE,  0,  NULL,NULL,&si, &pi )) 
-            {                        
-              CloseHandle( pi.hProcess );
-              CloseHandle( pi.hThread );                                                       
-            }              
-         }
-         else
-         {
-             DPRINT1("CsrStartScreenSaver : FAIL %S\n",szBuffer);   
-         }                    
-         RegCloseKey(hKey);		
-    }    
-	return Request->Status = STATUS_SUCCESS;
+
+        result = RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop", 0, KEY_ALL_ACCESS, &hKey);
+        if (result == ERROR_SUCCESS)
+        {
+            result = RegQueryValueExW(hKey, L"SCRNSAVE.EXE", 0, &varType, (LPBYTE)szBuffer, &bufferSize);
+            if(result == ERROR_SUCCESS) 
+            {
+                swprintf(szCmdline, L"%s /s",szBuffer);
+                DPRINT1("CsrStartScreenSaver : OK %S, Name %S\n", szCmdline, szBuffer);
+                ZeroMemory( &si, sizeof(si) );
+                si.cb = sizeof(si);
+                ZeroMemory( &pi, sizeof(pi) );
+                if(CreateProcessW( NULL, szCmdline, NULL, NULL, FALSE,  0,  NULL,NULL,&si, &pi )) 
+                {
+                    CloseHandle( pi.hProcess );
+                    CloseHandle( pi.hThread );
+                }
+            }
+            else
+            {
+                DPRINT1("CsrStartScreenSaver : failed 0x%08X\n", result);
+            }
+            RegCloseKey(hKey);
+        }
+        else
+        {
+            DPRINT1("CsrStartScreenSaver : failed to RegOpenKeyExW 0x%08X\n", result);
+        }
+        return Request->Status = STATUS_SUCCESS;
+    }
+    else
+    {
+        /* TODO: Stopping the screensaver */
+        return Request->Status = STATUS_NOT_IMPLEMENTED;
+    }
 }
 
 /* EOF */




More information about the Ros-diffs mailing list