السلام عليكم تنويه : هذا الموضوع فقط للترويح عن النفس من الوضع الحالي ومحاولة تناسي التعاسة و التشاؤم الذي نعيشه بسبب ... وجدت نفسي في قمة الملل كل كم دقيقة اعمل refresh لموقع الفريق العربي لعل وعسى اجد ما يزيل الضجر و الملل الذي انا فيه فلم اجد ما يرضي ذلك الانسان المعقد ... أمامي كتاب Windows NT/2000 Native API , نظرت لواجهة الكتاب مرات ومرات و بعدها قررت افتح الكتاب و انتقي دالة بصورة عشوائية لاطبق عليها مثالاً (طبعا انتقيت الاسهل حتى لا اقلق دماغي بطلامس كثيرة )... الدالة ZwPowerInformation من الاسم يمكن نعرف شئ عنها ... وظيفتها الحصول ( تغيير ) على ( في ) معلومات الـ Power .. تصريح الدالة حسب ذلك المرجع كالآتي
NTSYSAPINTSTATUSNTAPIZwPowerInformation( IN POWER_INFORMATION_LEVEL PowerInformationLevel, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBuffer);
function NtPowerInformation( PowerInformationLevel:TPowerInformationLevel; InputBuffer:Pointer; InputBufferLength:ULONG; OutputBuffer:Pointer; OutputBufferLength:ULONG ):NTSTATUS; stdcall external 'ntdll.dll' name 'NtPowerInformation';
TPowerInformationLevel=( SystemPowerPolicyAc, SystemPowerPolicyDc, VerifySystemPolicyAc, VerifySystemPolicyDc, SystemPowerCapabilities, SystemBatteryState, SystemPowerStateHandler, ProcessorStateHandler, SystemPowerPolicyCurrent, AdministratorPowerPolicy, SystemReserveHiberFile, ProcessorInformation, SystemPowerInformation );POWER_INFORMATION_LEVEL =TPowerInformationLevel;PPowerInformationLevel =^TPowerInformationLevel;
TProcessorPowerInformation = record Number, MaxMhz, CurrentMhz, MhzLimit, MazIdleState, CurrentIdleStatr:ULONG end; PProcessorPowerInformation=^TProcessorPowerInformation; PROCESSOR_POWER_INFORMATION=TProcessorPowerInformation; PPROCESSOR_POWER_INFORMATION=^TProcessorPowerInformation;
varProcessorInfo:TProcessorPowerInformation;res:NTSTATUS;begin ZeroMemory( @ProcessorInfo,sizeof( TProcessorPowerInformation)); res:=NtPowerInformation(ProcessorInformation,nil,0,@ProcessorInfo,sizeof(TProcessorPowerInformation)); if res=0 then// do what you want hereend;