將插斷服務常式連線到平行埠
核心模式用戶端可以使用 IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT 要求,將插斷服務常式和 延遲的埠檢查常式 連線到平行埠函式驅動程式的作業。
注意 Microsoft 不建議使用用戶端提供的中斷常式。 使用中斷可能會導致系統不穩定。 根據預設,會停用IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT要求。
為了協助移植和開發平行裝置的驅動程式,系統提供的平行埠函式驅動程式支援核心模式用戶端可用來啟用和停用連線中斷要求的登錄旗標。 連線中斷要求是由平行埠隨插即用登錄機碼下的EnableConnectInterruptIoctl 登錄專案值 EnableConnectInterruptIoctl來啟用。 專案值具有類型REG_DWORD,且預設值0x0 (停用) 。 不等於0x0的值會啟用連線中斷要求。
連線中斷要求會傳回 PARALLEL_INTERRUPT_INFORMATION 結構,其中包含平行埠中斷物件的指標,以及系統提供的回呼常式的下列指標:
TryAllocatePortAtInterruptLevel成員是非封鎖PPARALLEL_TRY_ALLOCATE_ROUTINE (ISR) 回呼的指標,核心模式驅動程式可以在 ISR 中用來配置平行埠。
FreePortFromInterruptLevel成員是非封鎖PPARALLEL_FREE_ROUTINE (ISR) 回呼的指標,核心模式驅動程式可以在 ISR 中使用以釋放平行埠。
在平行埠上的硬體中斷之後,會在 IRQL = DIRQL 呼叫插斷服務常式。 如果驅動程式連接插斷服務常式且具有Unload常式,驅動程式必須在其Unload常式中傳送IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT要求。
延遲的埠檢查常式會在平行埠釋放後呼叫,而且當沒有擱置的要求來配置埠或選取 IEEE 1284.3 裝置時。 驅動程式可以使用延後埠檢查常式來啟用中斷。
如果用戶端未配置埠時呼叫用戶端的插斷服務常式,用戶端可以呼叫 PPARALLEL_TRY_ALLOCATE_ROUTINE (ISR) 回呼,嘗試快速配置埠。 用戶端也可以使用PPARALLEL_FREE_ROUTINE (ISR) 回呼來釋放埠。
因為平行埠是由驅動程式共用,所以平行埠函式驅動程式會維護插斷服務常式的清單,以及連線到平行埠的延遲埠檢查常式。 平行埠函式驅動程式會依連線的順序呼叫所有連接的中斷常式和延後埠檢查常式。