Sdílet prostřednictvím


Použití popisovačů zdrojů přerušení

Správce modulu Plug and Play (PnP) přiřazuje zařízením zprávy o přerušení pomocí dvou průchodů. Nejprve správce PnP odešle ovladači žádost IRP_MN_FILTER_RESOURCE_REQUIREMENTS se seznamem hardwarových prostředků, včetně zpráv přerušení, které má v úmyslu přiřadit zařízení. Ovladač může změnit tento seznam tak, aby změnil počet zpráv přerušení a také některá nastavení jednotlivých zpráv. Poté, co správce PnP skutečně přiřadí prostředky, odešle žádost IRP_MN_START_DEVICE a poskytne úplný seznam hardwarových prostředků, včetně zpráv přerušení, které jsou přiřazeny k zařízení ovladače.

Požadavek IRP_MN_FILTER_RESOURCE_REQUIREMENTS poskytuje seznam IO_RESOURCE_DESCRIPTOR struktur. Pokud má zařízení strukturu schopností MSI (zprávou signalizované přerušení), jak je definováno ve specifikaci PCI 2.2, správce PnP poskytuje popisovač jediné zprávy přerušení. Pokud má zařízení strukturu schopností MSI-X definovanou ve specifikaci PCI 3.0, správce PnP poskytuje jednu strukturu pro každou zprávu přerušení. Popisovače přerušení zpráv mají Typ = CmResourceTypeInterrupt a Příznaky = CM_RESOURCE_INTERRUPT_LATCHED | CM_RESOURCE_INTERRUPT_MESSAGE. Ovladače mohou také změnit nastavení, jako je spřažení přerušení, úpravou členů struktury u.Přerušení. Všimněte si, že při použití MSI mají všechna přerušení stejnou afinitu, zatímco při použití MSI-X mohou mít různé afinity. Další informace naleznete v tématu přiřazení přerušení a priorita.

Pro MSI, jak je definováno v PCI 2.2, je u.Interrupt.MaximumVector - u.Interrupt.MinimumVector + 1 počet přidělených přerušovacích zpráv pro zařízení. Ovladače mohou změnit počet zpráv přerušení úpravou u.Interrupt.MinimumVector. U zpráv o přerušení MSI je u.Interrupt.MaximumVector vždycky CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN. Pokud chcete přidělit MessageCount přerušovací zprávy, nastavte u.Interrupt.MinimumVector na hodnotu CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN - MessageCount + 1.

U MSI-X, jak je definováno v PCI 3.0, můžou ovladače změnit počet zpráv přerušení přidělených přidáním nebo odebráním položek ze seznamu. Všimněte si, že zdroje zpráv přerušení přidané tímto způsobem nesmí být následně odebrány v reakci na požadavek IRP_MN_START_DEVICE. Pro MSI-X poskytuje správce PnP jeden popisovač pro každé přerušení zprávy a členy tohoto popisovače, u.Interrupt.MinimumVector a u.Interrupt.MaximumVector, jsou oba nastaveny na hodnotu CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN.

Jakmile Správce Plug and Play přiřadí všechny hardwarové prostředky zařízení, včetně zpráv přerušení, odešle ovladači žádost IRP_MN_START_DEVICE. Tato žádost poskytuje dva seznamy CM_PARTIAL_RESOURCE_DESCRIPTOR struktur, jeden pro nezpracované a přeložené prostředky. Pro zprávy o přerušení poskytuje správce PnP jednu strukturu pro každou přidělenou adresu paměti s Type = CmResourceTypeInterrupt a Flags = CM_RESOURCE_INTERRUPT_LATCHED | CM_RESOURCE_INTERRUPT_MESSAGE.

Všimněte si, že při použití MSI ovladač obdrží pouze jeden popisovač prostředku přerušení, protože všechny zprávy sdílejí stejnou adresu. MessageCount člen u.MessageInterrupt.Raw lze použít k určení počtu přiřazených zpráv. Při použití MSI-X ovladač obdrží samostatný popisovač prostředků pro každou zprávu přerušení.

V systému Windows 8 operační systém nepodporuje žádosti o prostředky pro více než 2048 přerušovacích zpráv na funkci zařízení. V systémech Windows 7 a Windows Vista operační systém nepodporuje žádosti o prostředky pro více než 910 přerušovacích zpráv na funkci zařízení. Pokud ovladač zařízení překročí tento limit, může se stát, že se zařízení nespustí. Aby ovladač mohl pracovat v počítači, který obsahuje mnoho logických procesorů, měl by se vyhnout vyžádání více než jednoho přerušení na procesor.

Během vyrovnávání prostředků přerušení systému může správce PnP požádat ovladač, aby ze seznamu požadavků na prostředky vybral upřednostňovanou sadu alternativních zdrojů přerušení. Přesto správce PnP nemůže vždy přiřadit ovladači prostředky, které preferuje. Ovladač proto musí, bez selhání, tolerovat přiřazení jakékoli sady alternativních zdrojů přerušení ze seznamu požadavků na prostředky. Zařízení může být například přiřazeno menšímu počtu přerušení zpráv, než požaduje ovladač. V nejhorším případě musí být ovladač připraven k provozu zařízení pouze s jedním přerušením založeným na řádku.