Dela via


Avbryt tillhörighet

Tillhörigheten för ett avbrott är den uppsättning processorer som kan hantera avbrottet. Varje enhet har en tillhörighetsprincip. Operativsystemet använder tillhörighetsprincipen för att beräkna tillhörigheten för enhetens avbrott. Tillhörighetsprincipen kan anges i enhetens INF-fil eller registerinställningar. Administratörer kan använda registret för att ange en tillhörighetsprincip för ett avbrott.

Administratörer kan ange följande poster under registernyckeln \Interrupt Management\Affinity Policy :

  • DevicePolicy är ett REG_DWORD värde som anger en tillhörighetsprincip. Möjliga värden och deras betydelser, se IRQ_DEVICE_POLICY. Microsoft rekommenderar att du använder standardprincipen om tillämpligt.

  • AssignmentSetOverride kan vara ett REG_BINARY, REG_DWORD eller REG_QWORD värde som anger en KAFFINITY-mask . För REG_BINARY måste storleken vara mindre än eller lika med KAFFINITY-storleken för plattformen och indatabyteordningen är lite endiansk. Om DevicePolicy är 0x04 (IrqPolicySpecifiedProcessors) anger masken en uppsättning processorer som enhetens avbrott ska tilldelas till.

En drivrutins INF-fil kan ange standardinställningar för registervärdena. Här är ett exempel på hur du anger värdet DevicePolicy till IrqPolicyOneCloseProcessor i INF-filen. Mer information finns i INF AddReg-direktiv.

[install-section-name.HW]
AddReg=add-registry-section 

[add-registry-section]
HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 2

Systemet gör registerinställningarna tillgängliga för enhetens drivrutin när den skickar IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP till drivrutinen. Operativsystemet tillhandahåller en IO_RESOURCE_DESCRIPTOR struktur för varje avbrott med typmedlemmen inställd på CmResourceTypeInterrupt. För ett meddelandesignalerat avbrott anges den CM_RESOURCE_INTERRUPT_MESSAGE biten av flags-medlemmen . annars är det tydligt. U.Interrupt-medlemmen beskriver inställningarna för avbrottet.

Följande tabell innehåller korrespondens mellan registerinställningar och medlemmar i u.Interrupt.

Registervärde Medlem i you.Interrupt
DevicePolicy AffinityPolicy
AssignmentSetOverride TargetedProcessors

Om KAFFINITY

KAFFINITY-typen är en tillhörighetsmask som representerar en uppsättning logiska processorer i en grupp.

typedef ULONG_PTR  KAFFINITY;

KAFFINITY-typen är 32 bitar på en 32-bitarsversion av Windows och är 64 bitar på en 64-bitarsversion av Windows.

Om en grupp innehåller n logiska processorer numreras processorerna från 0 till n-1. Processornummer i i gruppen representeras av bit i i tillhörighetsmasken, där i är i intervallet 0 till n-1. Affinitetsmaskbitar som inte motsvarar logiska processorer är alltid noll.

Om till exempel ett KAFFINITY-värde identifierar de aktiva processorerna i en grupp är maskbiten för en processor en om processorn är aktiv och är noll om processorn inte är aktiv.

Antalet bitar i tillhörighetsmasken avgör det maximala antalet logiska processorer i en grupp. För en 64-bitarsversion av Windows är det maximala antalet processorer per grupp 64. För en 32-bitarsversion av Windows är det maximala antalet processorer per grupp 32. Anropa rutinen KeQueryMaximumProcessorCountEx för att få det maximala antalet processorer per grupp. Det här antalet beror på maskinvarukonfigurationen för systemet med flera processorer, men kan aldrig överskrida de fasta 64-processor- och 32-processorgränserna som anges av 64-bitars- respektive 32-bitarsversionerna av Windows.

Den GROUP_AFFINITY strukturen innehåller en tillhörighetsmask och ett gruppnummer. Gruppnumret identifierar den grupp som tillhörighetsmasken gäller för.

Kernel-rutiner som använder KAFFINITY-typen inkluderar IoConnectInterrupt, KeQueryActiveProcessorCount och KeQueryActiveProcessors.