ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

processor.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:     ReactOS Shell Extensions
00003  * LICENSE:     LGPL - See COPYING in the top level directory
00004  * FILE:        dll\win32\shellext\devcpux\processor.c
00005  * PURPOSE:
00006  * COPYRIGHT:   Copyright 2007 Christoph von Wittich <Christoph_vW@ReactOS.org>
00007  *
00008  */
00009 
00010 #include <windows.h>
00011 #include <setupapi.h>
00012 #include <powrprof.h>
00013 
00014 #include "resource.h"
00015 
00016 HINSTANCE g_hInstance = NULL;
00017 INT_PTR CALLBACK ProcessorDlgProc (HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam);
00018 
00019 BOOL
00020 APIENTRY
00021 DllMain (HANDLE hInstance, DWORD dwReason, LPVOID lpReserved)
00022 {
00023     switch (dwReason)
00024     {
00025         case DLL_THREAD_ATTACH:
00026         case DLL_THREAD_DETACH:
00027         case DLL_PROCESS_ATTACH:
00028         case DLL_PROCESS_DETACH:
00029             break;
00030     }
00031 
00032     g_hInstance = (HINSTANCE) hInstance;
00033     return TRUE;
00034 }
00035 
00036 
00037 BOOL
00038 APIENTRY
00039 PropSheetExtProc(PSP_PROPSHEETPAGE_REQUEST PropPageRequest, LPFNADDPROPSHEETPAGE fAddFunc, LPARAM lParam)
00040 {
00041     PROPSHEETPAGE PropSheetPage;
00042     HPROPSHEETPAGE hPropSheetPage;
00043 
00044     if(PropPageRequest->PageRequested != SPPSR_ENUM_ADV_DEVICE_PROPERTIES)
00045         return FALSE;
00046 
00047     if ((!PropPageRequest->DeviceInfoSet) || (!PropPageRequest->DeviceInfoData))
00048         return FALSE;
00049 
00050     ZeroMemory(&PropSheetPage, sizeof(PROPSHEETPAGE));
00051     PropSheetPage.dwSize = sizeof(PROPSHEETPAGE);
00052     PropSheetPage.hInstance = g_hInstance;
00053     PropSheetPage.pszTemplate = MAKEINTRESOURCE(DLG_PROCESSORINFO);
00054     PropSheetPage.pfnDlgProc = ProcessorDlgProc;
00055 
00056     hPropSheetPage = CreatePropertySheetPage(&PropSheetPage);
00057     if(!hPropSheetPage)
00058         return FALSE;
00059 
00060     if(!(fAddFunc)(hPropSheetPage, lParam)) {
00061         DestroyPropertySheetPage (hPropSheetPage);
00062         return FALSE;
00063     }
00064 
00065     return TRUE;
00066 }
00067 
00068 void
00069 AddFeature(WCHAR* szFeatures, WCHAR* Feature, BOOL* bFirst)
00070 {
00071     if (!*bFirst)
00072         wcscat(szFeatures, L", ");
00073     *bFirst = FALSE;
00074     wcscat(szFeatures, Feature);
00075 }
00076 
00077 INT_PTR
00078 CALLBACK
00079 ProcessorDlgProc (HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
00080 {
00081     switch (uMessage) {
00082         case WM_INITDIALOG:
00083         {
00084             WCHAR szFeatures[MAX_PATH] = L"";
00085             WCHAR szModel[3];
00086             WCHAR szStepping[3];
00087             WCHAR szCurrentMhz[10];
00088             BOOL bFirst = TRUE;
00089             SYSTEM_INFO SystemInfo;
00090             PROCESSOR_POWER_INFORMATION PowerInfo;
00091 
00092             if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
00093                 AddFeature(szFeatures, L"MMX", &bFirst);
00094             if (IsProcessorFeaturePresent(PF_XMMI_INSTRUCTIONS_AVAILABLE))
00095                 AddFeature(szFeatures, L"SSE", &bFirst);
00096             if (IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE))
00097                 AddFeature(szFeatures, L"SSE2", &bFirst);
00098             /*if (IsProcessorFeaturePresent(PF_SSE3_INSTRUCTIONS_AVAILABLE))
00099                 AddFeature(szFeatures, L"SSE3", &bFirst); */
00100             if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
00101                 AddFeature(szFeatures, L"3DNOW", &bFirst);
00102 
00103             SetDlgItemTextW(hDlg, IDC_FEATURES, szFeatures);
00104 
00105             GetSystemInfo(&SystemInfo);
00106 
00107             wsprintf(szModel, L"%x", HIBYTE(SystemInfo.wProcessorRevision));
00108             wsprintf(szStepping, L"%d", LOBYTE(SystemInfo.wProcessorRevision));
00109 
00110             SetDlgItemTextW(hDlg, IDC_MODEL, szModel);
00111             SetDlgItemTextW(hDlg, IDC_STEPPING, szStepping);
00112 
00113             CallNtPowerInformation(11, NULL, 0, &PowerInfo, sizeof(PowerInfo));
00114             wsprintf(szCurrentMhz, L"%ld %s", PowerInfo.CurrentMhz, L"MHz");
00115             SetDlgItemTextW(hDlg, IDC_CORESPEED, szCurrentMhz);
00116 
00117             return TRUE;
00118         }
00119     }
00120     return FALSE;
00121 }

Generated on Fri May 25 2012 04:20:30 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.