這很重要
本文適用於程式設計人員。 如果您是客戶遇到藍牙裝置安裝問題,請參閱 在 Windows 中配對藍牙裝置
藍牙配置檔驅動程式有兩種安裝類型:
- 遠端裝置公告其服務後,計算機連線到它並進行客戶端安裝。 範例包括:滑鼠、鍵盤和印表機。
- 伺服器端安裝是指計算機廣播服務,讓遠端裝置可以連線到計算機以使用這些服務。 例如,廠商可以撰寫伺服器端安裝,讓行動裝置列印到連接到計算機的印表機。
這兩種安裝類型需要不同的安裝程式。
安裝用戶端配置檔驅動程式
想要使用已啟用藍牙裝置的使用者,會將裝置帶入計算機範圍內,並使用用戶端配置檔驅動程式的下列安裝順序,起始從電腦到遠端裝置的連線。
- 選取 [控制面板] 中的 [新增藍牙裝置],以尋找計算機範圍內的所有裝置。
- 選取要配對的裝置。
- 將裝置與本機無線電配對,其中不一定牽涉到 PIN 交換。
- 本機無線電會發出服務探索通訊協定 (SDP) 查詢,以識別遠端裝置上支援的服務。
- [ 找到的新硬體精靈 ] 會在本機硬碟和 Windows Update 上搜尋適當的驅動程式。
- 如果 [找到新的硬體精靈 ] 找不到裝置的適當驅動程式,則會提示使用者插入配置檔驅動程式安裝媒體,其中包含配置檔驅動程式的裝置安裝信息檔 (INF 檔案)。
安裝伺服器端設定檔驅動程式
藍牙驅動程式堆疊支援藍牙 SIG 所定義的服務 GUID,以及藍牙 SIG 未定義的自定義 GUID。
備註
Microsoft Windows SDK 所提供的 guidgen.exe 工具可用來建立自定義 GUID。
使用者模式安裝應用程式必須開發,以揭露遠端藍牙裝置可用的電腦功能。
安裝應用程式必須與藍牙驅動程式堆棧通訊,才能建立服務 GUID,讓功能公開。 廠商會在應用程式和裝置安裝 INF 檔案中指定服務 GUID。
安裝應用程式必須呼叫使用者模式 API BluetoothSetLocalServiceInfo。 在應用程式可以呼叫此 API 之前,應用程式必須具有SE_LOAD_DRIVER_NAME安全性許可權。 下列程式代碼範例示範如何取得此許可權。 請注意 ,此範例不會示範錯誤處理。
HANDLE procToken;
LUID luid;
TOKEN_PRIVILEGES tp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &procToken);
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &luid);
Tp.PrivilegeCount = 1;
Tp.privileges[0].Luid = luid;
Tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(procToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD)NULL)
設定檔驅動程式 INF 檔案
配置檔驅動程式的 INF 檔案包含用戶端安裝藍牙裝置的相關信息。 針對伺服器端安裝,INF 檔案會指定裝置識別碼,此標識碼會對應至安裝應用程式所建立的服務 GUID。 所有藍牙裝置都是 藍牙 類別的成員。 藍牙類別安裝程式 (Bthci.dll) 可協助安裝配置檔驅動程式。
如需建立和散發 INF 檔案及安裝驅動程式的詳細資訊,請參閱 建立 INF 檔案 和 INF 檔案區段和指示詞。
即插即用標識碼
藍牙驅動程式堆疊會根據下列範本產生硬體識別碼:
- BTHENUM\{ ServiceGUID}_VID& nnnnnnnn
- BTHENUM\{ ServiceGUID}_VID& nnnnnnnn_PID& nnnn
- BTHENUM\{ ServiceGUID}_LOCALMFG& nnnn
藍牙驅動程式堆疊會根據下列範本產生相容的標識碼:
- BTHENUM\{ ServiceGUID}
ServiceGUID 是根據藍牙規格定義,由 16 位元 GUID 擴展為 128 位元 GUID。 例如,{00001124-0000-1000-8000-00805F9B34FB} 會對應至 HID 裝置。
- VID 之後的八位數會對應至廠商標識碼。
- PID 后四位數會對應至產品標識碼。
- LOCALMFG 後面的四位數會對應至本機藍牙無線電製造商。
- VID/PID 和 LOCALMFG 標記彼此獨立。
最通用的裝置識別碼是 ServiceGUID 本身。 例如:
BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}
藍牙驅動程式堆疊可以限制載入您的配置檔案驅動程式和軟體,使其只在遠端裝置的特定版本上運作,方法是在遠端裝置和 INF 檔案中使用 Plug and Play 標識碼。 只有當裝置發佈的即插即用 ID 能被藍牙驅動程式堆疊使用 SDP 偵測到時,它才會產生 VID/PID 配對。 例如:
BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_VID& nnnnnnnn_PID& nnnn
藍牙驅動程式堆疊可以限制只在特定的本機藍牙射頻上執行設定檔驅動程式和軟體,您可以透過在 INF 檔案中的裝置識別碼中指定 LOCALMFG 標籤來達成這一點。 例如:
BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_LOCALMFG& nnnn