SPB-Connected周邊裝置的連線識別碼

驅動程式必須先開啟裝置的邏輯連線,才能將 I/O 要求傳送至 簡單周邊匯流排 (SPB) 上的周邊裝置。 透過此連線,驅動程式可以傳送讀取和寫入要求,以在裝置往返傳輸資料。 此外,驅動程式可以將 I/O 控制項 (IOCTL) 要求傳送至裝置,以執行 SPB 特定作業。

在系統啟動時,隨插即用 (PnP) 管理員會列舉 PnP 裝置和非 PnP 裝置。 對於與 SPB 有固定連線的非 PnP 周邊裝置,PnP 管理員會查詢硬體平臺的 ACPI 韌體,以取得一組連線參數,以描述如何存取裝置。 這些連線參數會識別裝置所連線之匯流排的 SPB 控制器,並包含控制器與裝置通訊所需的其他資訊,例如匯流排位址和匯流排時鐘頻率。

PnP 管理員會將稱為 連線識別碼的識別碼指派給 SPB 連線周邊裝置的連接參數。 PnP 管理員會將此識別碼和連線參數一起儲存在稱為 資源中樞的系統資料存放區中。 (資源中樞是內部資料存放區,PnP 管理員會在其中儲存 SPB 連線周邊裝置的設定資訊。) 連線識別碼會封裝這些參數,讓驅動程式不需要明確提供它們。

SPB 連線周邊裝置的驅動程式會收到裝置的連線識別碼,作為驅動程式指派硬體資源的一部分。 當周邊裝置的驅動程式呼叫系統函式以開啟裝置的連線時,驅動程式會提供連線識別碼,函式會使用此識別碼從資源中樞擷取裝置的連線參數。

驅動程式開發人員可以使用 USER-Mode Driver Framework (UMDF) 或 Kernel-Mode Driver Framework (KMDF) 來建置 SPB 連線周邊裝置的驅動程式。 UMDF 驅動程式會在架構呼叫驅動程式的 IPnpCallbackHardware2::OnPrepareHardware 方法時收到其資源 (,包括連線識別碼) 。 KMDF 驅動程式會在 EvtDevicePrepareHardware 回呼期間接收其硬體資源。

若要讓 UMDF 周邊驅動程式在其資源清單中接收連線識別碼,安裝驅動程式的 INF 檔案必須在其 WDF 特定的 DDInstall 區段中包含下列指示詞:

UmdfDirectHardwareAccess = AllowDirectHardwareAccess 如需此指示詞的詳細資訊,請參閱 在 INF 檔案中指定 WDF 指示詞。 如需用來建置使用此指示詞之對應 INF 檔案) 的 INX 檔案 (範例,請參閱 SpbAccelerometer 驅動程式範例。

驅動程式以資源的形式接收的連接識別碼是 64 位整數,但驅動程式必須將此識別碼併入裝置路徑名稱,以用來從資源中樞擷取連線參數。 若要建立裝置路徑名稱,驅動程式會呼叫 reshub.h 標頭檔中宣告的 RESOURCE_HUB_CREATE_PATH_FROM_ID 函式。

若要開啟 SPB 連線周邊裝置的邏輯連線,UMDF 驅動程式會呼叫 IWDFRemoteTarget::OpenFileByName 方法,而 KMDF 驅動程式會呼叫 WdfIoTargetOpen 方法。 任一種方法都需要裝置路徑名稱作為輸入參數。

如需使用連線識別碼來開啟 SPB 連線周邊裝置邏輯連線的 UMDF 和 KMDF 程式碼範例,請參閱下列主題:

User-Mode SPB 周邊驅動程式硬體資源Kernel-Mode SPB 周邊驅動程式使用者模式應用程式的硬體資源無法開啟 SPB 連線周邊裝置的邏輯連線,也無法直接將 I/O 要求傳送至這些裝置。

一次只有一個驅動程式可以保存 SPB 連線周邊裝置的開放式邏輯連線。 另一個驅動程式嘗試開啟與相同裝置的第二個連線失敗。