Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenprocessor.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
1.7.6.1
|