Процессор, сопроцессор Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor.feed 2022-09-13T04:42:35+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Архитектура x86 2017-10-01T03:17:06+07:00 2017-10-01T03:17:06+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/arkhitektura-x86.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Введение</span></p> <p style="margin: 7px 0px;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000; font-weight: bold;">Код</span> <span style="color: #000000; font-weight: bold;">и</span> <span style="color: #000000; font-weight: bold;">данные</span><span style="color: #000000; font-weight: bold;">: </span><span style="color: #000000; font-weight: bold;">основной</span> <span style="color: #000000; font-weight: bold;">принцип</span> <span style="color: #000000; font-weight: bold;">работы</span> <span style="color: #000000; font-weight: bold;">процессора</span></span></p> <p style="margin: 7px 0px;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;">Итак</span><span style="color: #000000;">, </span><span style="color: #000000;">если</span> <span style="color: #000000;">не</span> <span style="color: #000000;">пытаться</span> <span style="color: #000000;">изложить</span> <span style="color: #000000;">здесь</span> <span style="color: #000000;">«кратенько»</span> <span style="color: #000000;">курс</span> <span style="color: #000000;">информатики</span> <span style="color: #000000;">для</span> <span style="color: #000000;">средней</span> <span style="color: #000000;">школы</span><span style="color: #000000;">, </span><span style="color: #000000;">то</span> <span style="color: #000000;">единственное</span> <span style="color: #000000;">что</span> <span style="color: #000000;">хотелось</span> <span style="color: #000000;">бы</span> <span style="color: #000000;">напомнить</span> <span style="color: #000000;">—</span> <span style="color: #000000;">это</span> <span style="color: #000000;">то</span><span style="color: #000000;">, </span><span style="color: #000000;">что</span> <span style="color: #000000;">процессор</span><span style="color: #000000;"> (</span><span style="color: #000000;">за</span> <span style="color: #000000;">редкими</span> <span style="color: #000000;">исключениями</span><span style="color: #000000;">) </span><span style="color: #000000;">исполняет</span> <span style="color: #000000;">не</span> <span style="color: #000000;">программы</span><span style="color: #000000;">, </span><span style="color: #000000;">написанные</span> <span style="color: #000000;">на</span> <span style="color: #000000;">каком</span><span style="color: #000000;">-</span><span style="color: #000000;">нибудь</span> <span style="color: #000000;">языке</span> <span style="color: #000000;">программирования</span><span style="color: #000000;"> (</span><span style="color: #000000;">один</span> <span style="color: #000000;">из</span> <span style="color: #000000;">которых</span><span style="color: #000000;">, </span><span style="color: #000000;">вы</span><span style="color: #000000;">, </span><span style="color: #000000;">возможно</span><span style="color: #000000;">, </span><span style="color: #000000;">даже</span> <span style="color: #000000;">знаете</span><span style="color: #000000;">), </span><span style="color: #000000;">а</span> <span style="color: #000000;">некий</span> <span style="color: #000000;">«машинный</span> <span style="color: #000000;">код»</span><span style="color: #000000;">. </span><span style="color: #000000;">То</span> <span style="color: #000000;">есть</span> <span style="color: #000000;">командами</span> <span style="color: #000000;">для</span> <span style="color: #000000;">него</span> <span style="color: #000000;">являются</span> <span style="color: #000000;">последовательности</span> <span style="color: #000000;">байтов</span><span style="color: #000000;">, </span><span style="color: #000000;">находящихся</span> <span style="color: #000000;">в</span> <span style="color: #000000;">памяти</span> <span style="color: #000000;">компьютера</span><span style="color: #000000;">. </span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/arkhitektura-x86.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Введение</span></p> <p style="margin: 7px 0px;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000; font-weight: bold;">Код</span> <span style="color: #000000; font-weight: bold;">и</span> <span style="color: #000000; font-weight: bold;">данные</span><span style="color: #000000; font-weight: bold;">: </span><span style="color: #000000; font-weight: bold;">основной</span> <span style="color: #000000; font-weight: bold;">принцип</span> <span style="color: #000000; font-weight: bold;">работы</span> <span style="color: #000000; font-weight: bold;">процессора</span></span></p> <p style="margin: 7px 0px;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;">Итак</span><span style="color: #000000;">, </span><span style="color: #000000;">если</span> <span style="color: #000000;">не</span> <span style="color: #000000;">пытаться</span> <span style="color: #000000;">изложить</span> <span style="color: #000000;">здесь</span> <span style="color: #000000;">«кратенько»</span> <span style="color: #000000;">курс</span> <span style="color: #000000;">информатики</span> <span style="color: #000000;">для</span> <span style="color: #000000;">средней</span> <span style="color: #000000;">школы</span><span style="color: #000000;">, </span><span style="color: #000000;">то</span> <span style="color: #000000;">единственное</span> <span style="color: #000000;">что</span> <span style="color: #000000;">хотелось</span> <span style="color: #000000;">бы</span> <span style="color: #000000;">напомнить</span> <span style="color: #000000;">—</span> <span style="color: #000000;">это</span> <span style="color: #000000;">то</span><span style="color: #000000;">, </span><span style="color: #000000;">что</span> <span style="color: #000000;">процессор</span><span style="color: #000000;"> (</span><span style="color: #000000;">за</span> <span style="color: #000000;">редкими</span> <span style="color: #000000;">исключениями</span><span style="color: #000000;">) </span><span style="color: #000000;">исполняет</span> <span style="color: #000000;">не</span> <span style="color: #000000;">программы</span><span style="color: #000000;">, </span><span style="color: #000000;">написанные</span> <span style="color: #000000;">на</span> <span style="color: #000000;">каком</span><span style="color: #000000;">-</span><span style="color: #000000;">нибудь</span> <span style="color: #000000;">языке</span> <span style="color: #000000;">программирования</span><span style="color: #000000;"> (</span><span style="color: #000000;">один</span> <span style="color: #000000;">из</span> <span style="color: #000000;">которых</span><span style="color: #000000;">, </span><span style="color: #000000;">вы</span><span style="color: #000000;">, </span><span style="color: #000000;">возможно</span><span style="color: #000000;">, </span><span style="color: #000000;">даже</span> <span style="color: #000000;">знаете</span><span style="color: #000000;">), </span><span style="color: #000000;">а</span> <span style="color: #000000;">некий</span> <span style="color: #000000;">«машинный</span> <span style="color: #000000;">код»</span><span style="color: #000000;">. </span><span style="color: #000000;">То</span> <span style="color: #000000;">есть</span> <span style="color: #000000;">командами</span> <span style="color: #000000;">для</span> <span style="color: #000000;">него</span> <span style="color: #000000;">являются</span> <span style="color: #000000;">последовательности</span> <span style="color: #000000;">байтов</span><span style="color: #000000;">, </span><span style="color: #000000;">находящихся</span> <span style="color: #000000;">в</span> <span style="color: #000000;">памяти</span> <span style="color: #000000;">компьютера</span><span style="color: #000000;">. </span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/arkhitektura-x86.html">Подробнее...</a></p> Как запустить процесс на конкретном процессоре в много процессорной системе? 2017-09-30T17:30:55+07:00 2017-09-30T17:30:55+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-zapustit-protsess-na-konkretnom-protsessore-v-mnogo-protsessornoj-sisteme.html Super User toto44@inbox.ru <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman'; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> ExecuteProcess(FileName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Visibility: Integer; BitMask: Integer; Synch: Boolean): Longword;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//valori di Visibility:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">Value                Meaning</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_HIDE            :Hides the window and activates another window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_MAXIMIZE        :Maximizes the specified window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_MINIMIZE        :Minimizes the specified window and activates the next top-level window in the Z order.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_RESTORE        :Activates and displays the window. If the window is minimized or maximized,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                    Windows restores it to its original size and position. An application should</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                    specify this flag when restoring a minimized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOW                :Activates the window and displays it in its current size and position.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWDEFAULT        :Sets the show state based on the SW_ flag specified in the STARTUPINFO</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                        structure passed to the CreateProcess function by the program that started the application.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMAXIMIZED       :Activates the window and displays it as a maximized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMINIMIZED       :Activates the window and displays it as a minimized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMINNOACTIVE     :Displays the window as a minimized window. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNA              :Displays the window in its current state. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNOACTIVATE      :Displays a window in its most recent size and position. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNORMAL          :Activates and displays a window. If the window is minimized or maximized,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                      Windows restores it to its original size and position. An application should specify this</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                      flag when displaying the window for the first time.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//FileName: the name of the program I want to launch</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//Bitmask:   specifies the set of CPUs on wich I want to run the program</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//the BitMask is built in the following manner:</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//I have a bit sequence: every bit is associated to a CPU (from right to left)</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//I set the bit to 1 if I want to use the corrisponding CPU, 0 otherwise</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//for example: I have 4 processor and I want to run the specified process on the CPU 2 and 4:</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//the corresponding bitmask will be     1010 --&gt;2^0 * 0 + 2^1 * 1 + 2^2 * 0 + 2^3 * 1 = 2 + 8 = 10</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//hence BitMask = 10</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//Synch: Boolean --&gt; True if I want a Synchronous Execution (I cannot close</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//my application before the launched process is terminated)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> zAppName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">512</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> zCurDir: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> WorkDir: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo: TStartupInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> ProcessInfo: TProcessInformation;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> Closed: Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> Closed := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StrPCopy(zAppName, FileName);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> GetDir(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, WorkDir);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StrPCopy(zCurDir, WorkDir);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> FillChar(StartupInfo, SizeOf(StartupInfo), </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.cb := SizeOf(StartupInfo);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.dwFlags := STARTF_USESHOWWINDOW;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.wShowWindow := Visibility;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> CreateProcess(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">,</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    zAppName, </span><span class="f_CodeExample" style="color: #000080;">// pointer to command line string</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to process security attributes</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to thread security attributes</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    False, </span><span class="f_CodeExample" style="color: #000080;">// handle inheritance flag</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    CREATE_NEW_CONSOLE </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span> <span class="f_CodeExample" style="color: #000080;">// creation flags</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    NORMAL_PRIORITY_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">CLASS</span><span class="f_CodeExample" style="color: #000000;">,</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">//pointer to new environment block</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to current directory name</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    StartupInfo, </span><span class="f_CodeExample" style="color: #000080;">// pointer to STARTUPINFO</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    ProcessInfo) </span><span class="f_CodeExample" style="color: #000080;">// pointer to PROCESS_INF</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Result := WAIT_FAILED</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//running the process on the set of CPUs specified by BitMask</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">    SetProcessAffinityMask(ProcessInfo.hProcess, BitMask);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">/////</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (Synch = True) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span> <span class="f_CodeExample" style="color: #000080;">//if I want a Synchronous execution (I cannot close my</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// application before this process is terminated)</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        Closed:= False;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">          </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> WaitForSingleObject(</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">            ProcessInfo.hProcess, </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">              WAIT_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OBJECT</span><span class="f_CodeExample" style="color: #000000;">_</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> : Closed:= True;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">              WAIT_FAILED : RaiseLastWin32Error;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">          </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">          Application.ProcessMessages;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (Closed);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        GetExitCodeProcess(ProcessInfo.hProcess, Result);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #000080;">//exit code of the launched process (0 if the process returned no error  )</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        CloseHandle(ProcessInfo.hProcess);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        CloseHandle(ProcessInfo.hThread);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        Result := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">{ExecuteProcess}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">// Open Taskmanager, select the launched process, right click,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">// "Set affinity", you will see a check on the CPUs you selected</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #008000; font-family: 'Courier New'; font-size: 12pt; font-weight: bold;"> </span></p> <p><span style="color: #000080; font-family: 'Courier New'; font-size: 12pt;"> </span></p> <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman'; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> ExecuteProcess(FileName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Visibility: Integer; BitMask: Integer; Synch: Boolean): Longword;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//valori di Visibility:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">Value                Meaning</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_HIDE            :Hides the window and activates another window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_MAXIMIZE        :Maximizes the specified window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_MINIMIZE        :Minimizes the specified window and activates the next top-level window in the Z order.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_RESTORE        :Activates and displays the window. If the window is minimized or maximized,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                    Windows restores it to its original size and position. An application should</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                    specify this flag when restoring a minimized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOW                :Activates the window and displays it in its current size and position.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWDEFAULT        :Sets the show state based on the SW_ flag specified in the STARTUPINFO</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                        structure passed to the CreateProcess function by the program that started the application.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMAXIMIZED       :Activates the window and displays it as a maximized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMINIMIZED       :Activates the window and displays it as a minimized window.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWMINNOACTIVE     :Displays the window as a minimized window. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNA              :Displays the window in its current state. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNOACTIVATE      :Displays a window in its most recent size and position. The active window remains active.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">SW_SHOWNORMAL          :Activates and displays a window. If the window is minimized or maximized,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                      Windows restores it to its original size and position. An application should specify this</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">                      flag when displaying the window for the first time.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//FileName: the name of the program I want to launch</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//Bitmask:   specifies the set of CPUs on wich I want to run the program</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//the BitMask is built in the following manner:</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//I have a bit sequence: every bit is associated to a CPU (from right to left)</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//I set the bit to 1 if I want to use the corrisponding CPU, 0 otherwise</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//for example: I have 4 processor and I want to run the specified process on the CPU 2 and 4:</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//the corresponding bitmask will be     1010 --&gt;2^0 * 0 + 2^1 * 1 + 2^2 * 0 + 2^3 * 1 = 2 + 8 = 10</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//hence BitMask = 10</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//Synch: Boolean --&gt; True if I want a Synchronous Execution (I cannot close</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">//my application before the launched process is terminated)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> zAppName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">512</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> zCurDir: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> WorkDir: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo: TStartupInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> ProcessInfo: TProcessInformation;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> Closed: Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> Closed := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StrPCopy(zAppName, FileName);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> GetDir(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, WorkDir);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StrPCopy(zCurDir, WorkDir);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> FillChar(StartupInfo, SizeOf(StartupInfo), </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.cb := SizeOf(StartupInfo);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.dwFlags := STARTF_USESHOWWINDOW;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> StartupInfo.wShowWindow := Visibility;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> CreateProcess(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">,</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    zAppName, </span><span class="f_CodeExample" style="color: #000080;">// pointer to command line string</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to process security attributes</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to thread security attributes</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    False, </span><span class="f_CodeExample" style="color: #000080;">// handle inheritance flag</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    CREATE_NEW_CONSOLE </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span> <span class="f_CodeExample" style="color: #000080;">// creation flags</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    NORMAL_PRIORITY_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">CLASS</span><span class="f_CodeExample" style="color: #000000;">,</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">//pointer to new environment block</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">// pointer to current directory name</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    StartupInfo, </span><span class="f_CodeExample" style="color: #000080;">// pointer to STARTUPINFO</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    ProcessInfo) </span><span class="f_CodeExample" style="color: #000080;">// pointer to PROCESS_INF</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Result := WAIT_FAILED</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">//running the process on the set of CPUs specified by BitMask</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">    SetProcessAffinityMask(ProcessInfo.hProcess, BitMask);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">/////</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (Synch = True) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span> <span class="f_CodeExample" style="color: #000080;">//if I want a Synchronous execution (I cannot close my</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// application before this process is terminated)</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        Closed:= False;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">          </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> WaitForSingleObject(</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">            ProcessInfo.hProcess, </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">              WAIT_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OBJECT</span><span class="f_CodeExample" style="color: #000000;">_</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> : Closed:= True;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">              WAIT_FAILED : RaiseLastWin32Error;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">          </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">          Application.ProcessMessages;</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (Closed);</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        GetExitCodeProcess(ProcessInfo.hProcess, Result);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="color: #000080;">//exit code of the launched process (0 if the process returned no error  )</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        CloseHandle(ProcessInfo.hProcess);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;">        CloseHandle(ProcessInfo.hThread);</span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">        Result := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">{ExecuteProcess}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">// Open Taskmanager, select the launched process, right click,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-size: 12pt;">// "Set affinity", you will see a check on the CPUs you selected</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #008000; font-family: 'Courier New'; font-size: 12pt; font-weight: bold;"> </span></p> <p><span style="color: #000080; font-family: 'Courier New'; font-size: 12pt;"> </span></p> Как найти скорость процессора? 2017-09-30T17:12:47+07:00 2017-09-30T17:12:47+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-najti-skorost-protsessora.html Super User toto44@inbox.ru <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span></p> <p><span style="color: #000000; font-family: 'Times New Roman';">Пример взят из рассылки: СообЧА. Программирование на Delphi (</span><span style="color: #000000;"><span style="text-decoration: underline;">https://Subscribe.Ru/</span><span style="font-family: 'Times New Roman';">)</span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-najti-skorost-protsessora.html">Подробнее...</a></p> <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span></p> <p><span style="color: #000000; font-family: 'Times New Roman';">Пример взят из рассылки: СообЧА. Программирование на Delphi (</span><span style="color: #000000;"><span style="text-decoration: underline;">https://Subscribe.Ru/</span><span style="font-family: 'Times New Roman';">)</span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-najti-skorost-protsessora.html">Подробнее...</a></p> Как получить информацию о процессоре? 2017-09-30T17:17:30+07:00 2017-09-30T17:17:30+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-poluchit-informatsiyu-o-protsessore.html Super User toto44@inbox.ru <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">О процессоре можно на любом уровне (приложении или драйвере) получить информацию с помощью команды(машинной) CPUID(386+):</span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Например(Вставка на асм в языке Паскаль):</span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-poluchit-informatsiyu-o-protsessore.html">Подробнее...</a></p> <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">О процессоре можно на любом уровне (приложении или драйвере) получить информацию с помощью команды(машинной) CPUID(386+):</span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Например(Вставка на асм в языке Паскаль):</span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-poluchit-informatsiyu-o-protsessore.html">Подробнее...</a></p> Как узнать загрузку процессора? 2017-09-30T17:22:38+07:00 2017-09-30T17:22:38+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-uznat-zagruzku-protsessora.html Super User toto44@inbox.ru <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span><span style="font-family: 'MS Sans Serif'; font-size: 8pt;"> </span></p> <div style="margin: 7px 0px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman'; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemBasicInformation = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemPerformanceInformation = </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemTimeInformation = </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TPDWord = ^DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Basic_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwUnknown1: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uKeMaximumIncrement: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uPageSize: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmNumberOfPhysicalPages: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmLowestPhysicalPage: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmHighestPhysicalPage: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uAllocationGranularity: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    pLowestUserAddress: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    pMmHighestUserAddress: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uKeActiveProcessors: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bKeNumberProcessors: byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bUnknown2: byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    wUnknown3: word; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Performance_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liIdleTime: LARGE_INTEGER; </span><span class="f_CodeExample" style="color: #000080;">{LARGE_INTEGER}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwSpare: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">75</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Time_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liKeBootTime: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liKeSystemTime: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liExpTimeZoneBias: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uCurrentTimeZoneId: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwReserved: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> NtQuerySystemInformation: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(infoClass: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    buffer: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bufSize: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    returnSize: TPDword): DWORD; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">stdcall</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> liOldIdleTime: LARGE_INTEGER = (); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> liOldSystemTime: LARGE_INTEGER = (); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Li2Double(x: LARGE_INTEGER): Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := x.HighPart * </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">.294967296E9 + x.LowPart </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> GetCPUUsage; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysBaseInfo: TSystem_Basic_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysPerfInfo: TSystem_Performance_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysTimeInfo: TSystem_Time_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> status: Longint; </span><span class="f_CodeExample" style="color: #000080;">{long}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dbSystemTime: Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dbIdleTime: Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bLoopAborted : boolean; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> @NtQuerySystemInformation = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    NtQuerySystemInformation := GetProcAddress(GetModuleHandle(</span><span class="f_CodeExample" style="color: #ff0000;">'ntdll.dll'</span><span class="f_CodeExample" style="color: #000000;">), </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'NtQuerySystemInformation'</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// get number of processors in the system </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Show some information </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> SysBaseInfo </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      ShowMessage( </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Format(</span><span class="f_CodeExample" style="color: #ff0000;">'uKeMaximumIncrement: %d'#13'uPageSize: %d'#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uMmNumberOfPhysicalPages: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">'uMmLowestPhysicalPage: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uMmHighestPhysicalPage: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">'uAllocationGranularity: %d'#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uKeActiveProcessors: %d'#13'bKeNumberProcessors: %d'</span><span class="f_CodeExample" style="color: #000000;">, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      [uKeMaximumIncrement, uPageSize, uMmNumberOfPhysicalPages, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      uMmLowestPhysicalPage, uMmHighestPhysicalPage, uAllocationGranularity, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      uKeActiveProcessors, bKeNumberProcessors])); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bLoopAborted := False; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> bLoopAborted </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// get new system time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// get new CPU's idle time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// if it's a first call - skip it </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (liOldIdleTime.QuadPart &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentValue = NewValue - OldValue </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentCpuIdle = IdleTime / SystemTime </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := dbIdleTime / dbSystemTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> - dbIdleTime * </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> / SysBaseInfo.bKeNumberProcessors + </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// Show Percentage </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Form1.Label1.Caption := FormatFloat(</span><span class="f_CodeExample" style="color: #ff0000;">'CPU Usage: 0.0 %'</span><span class="f_CodeExample" style="color: #000000;">,dbIdleTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Application.ProcessMessages; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// Abort if user pressed ESC or Application is terminated </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      bLoopAborted := (GetKeyState(VK_ESCAPE) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span> <span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> Application.Terminated; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// store new CPU's idle and system time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liOldIdleTime := SysPerfInfo.liIdleTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liOldSystemTime := SysTimeInfo.liKeSystemTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// wait one second </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Sleep(</span><span class="f_CodeExample" style="color: #800000;">1000</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetCPUUsage </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #008000; font-family: 'Courier New'; font-size: 9pt; font-weight: bold;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-uznat-zagruzku-protsessora.html">Подробнее...</a></p> <p><span style="font-family: 'Courier New'; font-size: 8pt;"> </span><span style="font-family: 'MS Sans Serif'; font-size: 8pt;"> </span></p> <div style="margin: 7px 0px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman'; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemBasicInformation = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemPerformanceInformation = </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SystemTimeInformation = </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TPDWord = ^DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Basic_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwUnknown1: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uKeMaximumIncrement: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uPageSize: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmNumberOfPhysicalPages: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmLowestPhysicalPage: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uMmHighestPhysicalPage: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uAllocationGranularity: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    pLowestUserAddress: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    pMmHighestUserAddress: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uKeActiveProcessors: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bKeNumberProcessors: byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bUnknown2: byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    wUnknown3: word; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Performance_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liIdleTime: LARGE_INTEGER; </span><span class="f_CodeExample" style="color: #000080;">{LARGE_INTEGER}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwSpare: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">75</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TSystem_Time_Information = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liKeBootTime: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liKeSystemTime: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liExpTimeZoneBias: LARGE_INTEGER; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    uCurrentTimeZoneId: ULONG; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    dwReserved: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> NtQuerySystemInformation: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(infoClass: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    buffer: Pointer; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    bufSize: DWORD; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    returnSize: TPDword): DWORD; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">stdcall</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> liOldIdleTime: LARGE_INTEGER = (); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> liOldSystemTime: LARGE_INTEGER = (); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Li2Double(x: LARGE_INTEGER): Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := x.HighPart * </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">.294967296E9 + x.LowPart </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> GetCPUUsage; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysBaseInfo: TSystem_Basic_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysPerfInfo: TSystem_Performance_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SysTimeInfo: TSystem_Time_Information; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> status: Longint; </span><span class="f_CodeExample" style="color: #000080;">{long}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dbSystemTime: Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dbIdleTime: Double; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bLoopAborted : boolean; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> @NtQuerySystemInformation = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    NtQuerySystemInformation := GetProcAddress(GetModuleHandle(</span><span class="f_CodeExample" style="color: #ff0000;">'ntdll.dll'</span><span class="f_CodeExample" style="color: #000000;">), </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'NtQuerySystemInformation'</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// get number of processors in the system </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Show some information </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> SysBaseInfo </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      ShowMessage( </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Format(</span><span class="f_CodeExample" style="color: #ff0000;">'uKeMaximumIncrement: %d'#13'uPageSize: %d'#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uMmNumberOfPhysicalPages: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">'uMmLowestPhysicalPage: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uMmHighestPhysicalPage: %d'</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">+</span><span class="f_CodeExample" style="color: #ff0000;">'uAllocationGranularity: %d'#13</span><span class="f_CodeExample" style="color: #000000;">+ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #ff0000;">'uKeActiveProcessors: %d'#13'bKeNumberProcessors: %d'</span><span class="f_CodeExample" style="color: #000000;">, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      [uKeMaximumIncrement, uPageSize, uMmNumberOfPhysicalPages, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      uMmLowestPhysicalPage, uMmHighestPhysicalPage, uAllocationGranularity, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      uKeActiveProcessors, bKeNumberProcessors])); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bLoopAborted := False; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> bLoopAborted </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// get new system time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// get new CPU's idle time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> status &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span> <span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// if it's a first call - skip it </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (liOldIdleTime.QuadPart &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentValue = NewValue - OldValue </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentCpuIdle = IdleTime / SystemTime </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := dbIdleTime / dbSystemTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      dbIdleTime := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> - dbIdleTime * </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> / SysBaseInfo.bKeNumberProcessors + </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// Show Percentage </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Form1.Label1.Caption := FormatFloat(</span><span class="f_CodeExample" style="color: #ff0000;">'CPU Usage: 0.0 %'</span><span class="f_CodeExample" style="color: #000000;">,dbIdleTime); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      Application.ProcessMessages; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="color: #000080;">// Abort if user pressed ESC or Application is terminated </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      bLoopAborted := (GetKeyState(VK_ESCAPE) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span> <span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> Application.Terminated; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// store new CPU's idle and system time </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liOldIdleTime := SysPerfInfo.liIdleTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    liOldSystemTime := SysTimeInfo.liKeSystemTime; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #000080;">// wait one second </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Sleep(</span><span class="f_CodeExample" style="color: #800000;">1000</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetCPUUsage </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #008000; font-family: 'Courier New'; font-size: 9pt; font-weight: bold;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kak-uznat-zagruzku-protsessora.html">Подробнее...</a></p> Количество активных потоков и загруженность процессора 2017-09-30T17:19:39+07:00 2017-09-30T17:19:39+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kolichestvo-aktivnykh-potokov-i-zagruzhennost-protsessora.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">В реестре есть раздел HKEY_DYN_DATA. Основная информация о системе хранится в ключе PerfStats. </span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">О получении информации,например, о загруженности процессора, необходимо проделать следующие шаги: </span></span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Для начала необходимо запустить установленный счётчик в реестре. Это возможно путём считывания значения ключа, отвечающего за нужный параметр системы. </span></span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Например </span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kolichestvo-aktivnykh-potokov-i-zagruzhennost-protsessora.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">В реестре есть раздел HKEY_DYN_DATA. Основная информация о системе хранится в ключе PerfStats. </span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">О получении информации,например, о загруженности процессора, необходимо проделать следующие шаги: </span></span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Для начала необходимо запустить установленный счётчик в реестре. Это возможно путём считывания значения ключа, отвечающего за нужный параметр системы. </span></span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Например </span></span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/kolichestvo-aktivnykh-potokov-i-zagruzhennost-protsessora.html">Подробнее...</a></p> Определение фирмы производителя CPU 2017-10-01T03:18:57+07:00 2017-10-01T03:18:57+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/opredelenie-firmy-proizvoditelya-cpu.html Super User toto44@inbox.ru <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000080;">{ </span><span class="f_CodeExample" style="color: #000080;">Автор:       Gua, fbsdd@ukr.net, </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">***************************************************** }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> TVendor = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">11</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> char;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> .........................</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetCPUVendor: TVendor; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">assembler</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">register</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX </span><span class="f_CodeExample" style="color: #000080;">{Save affected register}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> PUSH EDI</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EAX </span><span class="f_CodeExample" style="color: #000080;">{@Result (TVendor)}</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,</span><span class="f_CodeExample" style="color: #800000;">0</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> DW </span><span class="f_CodeExample" style="color: #800000;">$A20F</span> <span class="f_CodeExample" style="color: #000080;">{CPUID Command}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> XCHG EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{save ECX result}</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">1</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EDX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">2</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">3</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> POP EDI </span><span class="f_CodeExample" style="color: #000080;">{Restore registers}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> POP EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000080;">{ </span><span class="f_CodeExample" style="color: #000080;">Автор:       Gua, fbsdd@ukr.net, </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">***************************************************** }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> TVendor = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">11</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> char;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> .........................</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetCPUVendor: TVendor; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">assembler</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">register</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX </span><span class="f_CodeExample" style="color: #000080;">{Save affected register}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> PUSH EDI</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EAX </span><span class="f_CodeExample" style="color: #000080;">{@Result (TVendor)}</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,</span><span class="f_CodeExample" style="color: #800000;">0</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> DW </span><span class="f_CodeExample" style="color: #800000;">$A20F</span> <span class="f_CodeExample" style="color: #000080;">{CPUID Command}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> XCHG EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{save ECX result}</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">1</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EDX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">2</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> MOV EAX,EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,</span><span class="f_CodeExample" style="color: #800000;">4</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">@</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">:</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> STOSB</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">SHR</span><span class="f_CodeExample" style="color: #000000;"> EAX,</span><span class="f_CodeExample" style="color: #800000;">8</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> LOOP @</span><span class="f_CodeExample" style="color: #800000;">3</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;"> POP EDI </span><span class="f_CodeExample" style="color: #000080;">{Restore registers}</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> POP EBX</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> Поддерживает ли процессор технологию 3DNow 2017-09-30T17:20:29+07:00 2017-09-30T17:20:29+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/podderzhivaet-li-protsessor-tekhnologiyu-3dnow.html Super User toto44@inbox.ru <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #0000ff;">{$ifndef ver80}</span> <span class="f_CodeExample" style="color: #000080;">// так как будем использовать 32-битный регистр</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">   </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> 3DNowSupport: Boolean; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">assembler</span><span class="f_CodeExample" style="color: #000000;">; </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      push  ebx </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      mov   @Result, True </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      mov   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      dw    </span><span class="f_CodeExample" style="color: #800000;">$A20F</span><span class="f_CodeExample" style="color: #000000;">            </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      cmp   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      jbe   @NOEXTENDED    </span><span class="f_CodeExample" style="color: #000080;">// 3DNow не поддерживается</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">     mov   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000001</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      dw    </span><span class="f_CodeExample" style="color: #800000;">$A20F</span><span class="f_CodeExample" style="color: #000000;">            </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      test  edx, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      jnz    @EXIT          </span><span class="f_CodeExample" style="color: #000080;">// 3DNow поддерживается</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">     @NOEXTENDED: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      mov  @Result, False </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      @EXIT: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      pop ebx </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #0000ff;">{$endif}</span></span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #0000ff;">{$ifndef ver80}</span> <span class="f_CodeExample" style="color: #000080;">// так как будем использовать 32-битный регистр</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">   </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> 3DNowSupport: Boolean; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">assembler</span><span class="f_CodeExample" style="color: #000000;">; </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      push  ebx </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      mov   @Result, True </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      mov   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      dw    </span><span class="f_CodeExample" style="color: #800000;">$A20F</span><span class="f_CodeExample" style="color: #000000;">            </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      cmp   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      jbe   @NOEXTENDED    </span><span class="f_CodeExample" style="color: #000080;">// 3DNow не поддерживается</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">     mov   eax, </span><span class="f_CodeExample" style="color: #800000;">$80000001</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      dw    </span><span class="f_CodeExample" style="color: #800000;">$A20F</span><span class="f_CodeExample" style="color: #000000;">            </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      test  edx, </span><span class="f_CodeExample" style="color: #800000;">$80000000</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">      jnz    @EXIT          </span><span class="f_CodeExample" style="color: #000080;">// 3DNow поддерживается</span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">     @NOEXTENDED: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      mov  @Result, False </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      @EXIT: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">      pop ebx </span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #0000ff;">{$endif}</span></span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> </span></p> Получение количества установленных процессоров 2017-09-30T17:24:24+07:00 2017-09-30T17:24:24+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/poluchenie-kolichestva-ustanovlennykh-protsessorov.html Super User toto44@inbox.ru <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GettingProcNum: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;  </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Struc:    _SYSTEM_INFO;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> GetSystemInfo(Struc);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Result:=IntToStr(Struc.dwNumberOfProcessors);</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GettingProcNum: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;  </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Struc:    _SYSTEM_INFO;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> GetSystemInfo(Struc);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Result:=IntToStr(Struc.dwNumberOfProcessors);</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> Получение уровня процессора 2017-09-30T17:28:08+07:00 2017-09-30T17:28:08+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/poluchenie-urovnya-protsessora.html Super User toto44@inbox.ru <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GettingProcLevel: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;  </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Struc:    _SYSTEM_INFO;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> GetSystemInfo(Struc);</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Case</span><span class="f_CodeExample" style="color: #000000;"> Struc.wProcessorLevel </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel 80386'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel 80486'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel Pentium'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">6</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel Pentium II or better'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> <p> </p> <div style="margin: 0px; padding: 0px; text-align: left; text-indent: 0px;"> <table style="border-width: 1px; border-style: solid; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-spacing: 0px; background-color: #ffffc4;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p style="text-align: justify;"><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-width: 1px; border-style: solid; border-color: #c0c0c0 #000000 #000000 #c0c0c0;"> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GettingProcLevel: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;  </span></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> Struc:    _SYSTEM_INFO;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"> GetSystemInfo(Struc);</span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Case</span><span class="f_CodeExample" style="color: #000000;"> Struc.wProcessorLevel </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel 80386'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel 80486'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel Pentium'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="color: #800000;">6</span><span class="f_CodeExample" style="color: #000000;">:  Result:=</span><span class="f_CodeExample" style="color: #ff0000;">'Intel Pentium II or better'</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> <p class="p_CodeExample"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></span></p> </td> </tr> </tbody> </table> </div> Работа с портами микропроцессора 2017-09-30T17:29:31+07:00 2017-09-30T17:29:31+07:00 https://delphi-hlp.ru/index.php/rabota-s-zhelezom/protsessor-soprotsessor/rabota-s-portami-mikroprotsessora.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">Автор: Pavlo Zolotarenki  </span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Модуль для работы с портами микропроцессора с сохранением синтаксиса.</span></span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">Уточнить работу под современными осями.</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/rabota-s-portami-mikroprotsessora.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">Автор: Pavlo Zolotarenki  </span></p> <p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;"><span style="color: #000000;"> </span><span style="color: #000000;">Модуль для работы с портами микропроцессора с сохранением синтаксиса.</span></span></p> <p><span style="color: #000000; font-family: tahoma,arial,helvetica,sans-serif; font-size: 12pt;">Уточнить работу под современными осями.</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rabota-s-zhelezom/protsessor-soprotsessor/rabota-s-portami-mikroprotsessora.html">Подробнее...</a></p>