掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自分の作ったEXEがCPU0で実行させるには? (ID:100383)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
やじゅさん 回答ありがとうございます。 頂いた情報でどうにか動作しました。 「SetThreadAffinityMask」ではどうもうまく動作しなかったので 「SetProcessAffinityMask」で実現しました。 スレッドとプロセスの違いはまだ良く理解できていませんが・・・ 参考までに実際のソフトもつけておきます。 もし、怪しい使い方をしているようでしたらご教授ください。 Option Explicit 'SystemInfo構造体の宣言 Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOrfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long wProcessorLevel As Integer wProcessorRevision As Integer End Type '関数の宣言 Private Declare Sub GetSystemInfo Lib "Kernel32.dll" (SystemInfo As SYSTEM_INFO) Private Declare Function SetProcessAffinityMask Lib "Kernel32.dll" _ (ByVal hProcess As Long, _ ByVal dwProcessAffinityMask As Long) As Boolean Private Declare Function GetProcessAffinityMask Lib "Kernel32.dll" _ (ByVal hProcess As Long, _ ByRef lpProcessAffinityMask As Long, _ ByRef lpSystemAffinityMask As Long) As Boolean Private Declare Function GetCurrentProcess Lib "Kernel32.dll" () As Long Private Sub Form_Load() Dim System As SYSTEM_INFO '変数の宣言 Dim ProcessAffinityMask As Long Dim SystemAffinityMask As Long Dim ret As Boolean Call GetSystemInfo(System) '情報の取得 If System.dwNumberOrfProcessors > 1 Then ' プロセッサの数が1より多いとき ret = SetProcessAffinityMask(GetCurrentProcess(), 1) ' CPU#0のみに設定 End If ret = GetProcessAffinityMask(GetCurrentProcess(), ProcessAffinityMask, SystemAffinityMask) '結果を表示 Label1.Caption = _ "このPCのプロセッサ数:" & CStr(System.dwNumberOrfProcessors) & vbCrLf & _ "使用するプロセッサマスク:" & CStr(ProcessAffinityMask) End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.