Udostępnij przez


Obsługa przerwania MSI

Usługa NDIS wywołuje funkcję MiniportMessageInterrupt , gdy karta interfejsu sieciowego generuje przerwanie. Parametr MessageId w tej funkcji identyfikuje komunikat MSI-X.

MiniportMessageInterrupt powinien zawsze zwracać TRUE po przetworzeniu przerwania, ponieważ przerwania komunikatów nie są współdzielone.

Sterownik miniportu powinien wykonać jak najmniejszą pracę w funkcji MiniportMessageInterrupt. Sterownik powinien przekazać operacje we/wy funkcji MiniportMessageInterruptDpc, która jest wywoływana przez NDIS w celu ukończenia odroczonego przetwarzania przerwania.

Aby umieścić w kolejce dodatkowe wywołania odroczonej procedury (DPC) po powrocie MiniportMessageInterrupt, sterownik miniport ustawia bity parametru TargetProcessors funkcji MiniportMessageInterrupt. Aby zażądać dodatkowych kontrolerów DPC z MiniportMessageInterrupt lub MiniportMessageInterruptDPC, sterownik miniportu może wywołać funkcję NdisMQueueDpc.

Sterownik miniportu może wywołać NdisMQueueDpc, aby zażądać dodatkowych wywołań DPC dla innych procesorów.

NDIS 6.1 i nowsze wersje zapewniają, że DPC dla różnych komunikatów zaplanowanych dla tego samego procesora są kolejkowane oddzielnie. Jeśli na przykład sterownik miniportu planuje dwa DPC w tym samym czasie na CPU 1 (jeden DPC dla komunikatu 0 i drugi DPC dla komunikatu 1), to na CPU 1 są ustawiane w kolejkę dwa DPC (jeden z komunikatem 0 i drugi z komunikatem 1).

NDIS gwarantuje również, że DPC dla tego samego komunikatu, które są zaplanowane na różnych procesorach, są kolejkowane oddzielnie. Jeśli na przykład sterownik miniportu planuje dwa wywołania DPC (jedno DPC na CPU 0 dla komunikatu 0 i jedno DPC na CPU 1 dla komunikatu 0), dwa oddzielne wywołania DPC są umieszczane w kolejce na CPU 0 i CPU 1, oba dla komunikatu 0.