共用方式為


IWDFInterrupt::AcquireInterruptLock 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上對 UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱 開始使用 UMDF。]

AcquireInterruptLock 方法會開始在保留中斷對象的鎖定時執行的程式代碼序列。

語法

void AcquireInterruptLock();

傳回值

沒有

言論

當驅動程式呼叫 AcquireInterruptLock時,系統會取得架構的中斷鎖定。

當驅動程式呼叫 ReleaseInterruptLock時,系統會釋放中斷鎖定。

如果您的驅動程式必須執行幾行程式代碼而不先佔,且中斷服務已停用,您可以使用 AcquireInterruptLockReleaseInterruptLock

您的驅動程式無法在架構呼叫驅動程式的 OnInterruptEnable 回呼函式之前,或在架構呼叫驅動程式的 OnInterruptDisable 回呼函式之前呼叫 acquireInterruptLock。

在驅動程式呼叫 AcquireInterruptLock之後,在呼叫 releaseInterruptLock 之前,它不得針對相同的中斷物件再次呼叫 方法。

在任意線程中執行時,例如 I/O 佇列回呼方法,驅動程式必須呼叫 IWDFInterrupt::TryToAcquireInterruptLock,而不是 IWDFInterrupt::AcquireInterruptLock。 例如,驅動程式會從 IQueueCallbackRead::OnRead呼叫 IWDFInterrupt::TryToAcquireInterruptLock

這樣做可避免死結的可能性,如下列案例所述。

  1. 為了判斷其裝置是否中斷,UMDF 會從 ISR 內將 I/O 傳送至其總線,並保留中斷鎖定。
  2. 總線驅動程式會在收到上述要求的相同線程中完成第二個要求。
  3. 第二個要求的完成例程會將要求傳送至 UMDF 驅動程式。
  4. UMDF 驅動程式的 I/O 分派例程會呼叫 IWDFInterrupt::AcquireInterruptLock,然後死結嘗試取得中斷鎖定。
驅動程式不得嘗試以遞歸方式取得鎖定。 如果連線到調試程式,架構會在此案例中引入斷點。

如需手動中斷鎖定的詳細資訊,請參閱 同步處理中斷程式代碼

如需處理 UMDF 驅動程式中斷的詳細資訊,請參閱 存取硬體和處理中斷

要求

要求 價值
終止支援 UMDF 2.0 和更新版本中無法使用。
目標平臺 桌面
最低 UMDF 版本 1.11
標頭 wudfddi.h
DLL WUDFx.dll

另請參閱

IWDFInterrupt

IWDFInterrupt::ReleaseInterruptLock

WdfInterruptAcquireLock