能力值:
( LV12,RANK:420 )
|
-
-
2 楼
基本各核心上IDT都是一样的~担心不一样的话可以使用设置亲和性或者SET PROCESSOR DPC的方式读取~
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
能否再说的细一点……
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
每个核心的IDT基址位置不同,sidt指令在多核CPU中反复执行会得到多个值的,具体是什么要看执行指令时是哪个核心在工作。
向二楼说的,可以设置亲和性:打开任务管理器,进程中找到你的程序,右键“关系设置...”,只保留CPU 0的话取的就是第一个核心的,保留CPU 1同理。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
NTKERNELAPI VOID KeSetAffinityThread(IN PKTHREAD pKThread, IN KAFFINITY Affinity);
int nAffinity = KeNumberProcessors;
KIRQL OldIrql;
do
{
KeSetAffinityThread( KeGetCurrentThread(), nAffinity);
KeRaiseIrql(HIGH_LEVEL, &OldIrql);
__asm sidt idt_info
...
KeLowerIrql(OldIrql);
nAffinity --;
} while ( nAffinity );
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
1.暴力搜索也可以
2.有2个内核函数里面能找到
|
能力值:
( LV7,RANK:100 )
|
-
-
7 楼
4楼的任务管理器似乎不能设置线程的亲和性,
5楼的方法真不错……
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
eek:
|
|
|