次の方法で共有


Bluetoothソフトウェア無線スイッチ機能プロトタイプ

注: Windows 8.1 以降では、オペレーティング システムがこの機能を処理するため、ソフトウェア DLL に無線オン/オフ機能 (Bluetooth 4.0 無線の場合) を実装する必要がなくなりました。 Windows 8.1 では、存在する場合でも、そのような DLL は無視されます。

Windows 8 の場合、Bluetooth無線はソフトウェアのオン/オフ機能をサポートする必要があります。 ベンダーの柔軟性を最大限に高めるために、Bluetooth Media Radio Manager はプラグインをサポートし、この機能をユーザーに公開できるようにします。

この DLL プラグインを提供するには、2 つの処理を行う必要があります。

正しい関数をエクスポートする DLL を作成する必要があります。DLL はマシンに登録する必要があります。 DLL は、システムの再起動を含め、無線状態を保持します。DLL は 2 つの関数をエクスポートする必要があります。

  • BluetoothEnableRadio: 無線サポート DLL は、BluetoothEnableRadio を実装して、Windows が無線の電源をオンまたはオフにできるようにします。
C++
DWORD WINAPI BluetoothEnableRadio(
   BOOL fEnable
);

fEnable: 無線電源をオンにするには TRUE に設定します。 無線電源をオフにするには FALSE に設定します。

戻り値: 現在の状態が fEnable の状態に変更された場合にERROR_SUCCESSを返します。 それ以外の場合は、現在の状態が変更されなかった場合に WIN32 エラー コードを返します。

  • IsBluetoothRadioEnabled: 無線サポート DLL は IsBluetoothRadioEnabled を実装して、Windows が無線の電源がオンかオフかを判断できるようにします。
C++
DWORD WINAPI IsBluetoothRadioEnabled(
   BOOL* pfEnabled
);

pfEnabled: 無線の電源がオンまたはオフかどうかを示すバッファーへのポインター。

戻り値: 現在の状態が取得された場合にERROR_SUCCESSを返します。 pfEnabled が指す値に状態が含まれるようになりました。 (true または false)。 それ以外の場合は、現在の状態が取得されなかった場合に WIN32 エラー コードを返します。 pfEnabled が指す値は未定義であり、使用しないでください

DLL Registration

メニューおよびコントロール パネル アプレットでソフトウェア 無線スイッチ コントロールを有効にするには、このサポート DLL を登録する必要があります。 次のレジストリ値を、該当する DLL への完全なパス (環境変数を含む場合があります) に設定します。

キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Radio Support

値の名前: "SupportDLL"

値データ: (パス)

Example:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Radio Support]

"SupportDLL"="C:\Program Files\Fabrikam\BthSupport.dll"

DLL は、C:\Program Files\Fabrikam などの安全な場所にインストールする必要があります。

要件と推奨事項

この設計により、ハードウェアの制御方法を柔軟に行うことができますが、オフ状態の場合、無線からの送受信は行われません。 さらに、電力を節約し、バスから取り外してBluetoothスタックをアンロードできるように、無線の電源を最も低い電力状態にすることをお勧めします。

BluetoothEnableRadio は、無線状態の変更が発生した後にのみ結果を返します。 さらに、この DLL 拡張機能は Windows 内で統合無線オン/オフ インフラストラクチャを提供することを目的としているため、DLL の使用は Windows コンポーネント用に予約する必要があります。 DLL が Windows 以外のコンポーネントでも使用されている場合や、Bluetooth Media Radio Manager のコンテキスト外で無線をオフにできるハードウェア スイッチが実装されている場合 (無線の電源をオフにするためにハードワイヤードされたスイッチなど) が正しい結果が返されるようにするのは、DLL の責任です。

Windows 8 Radio Management では、DLL がローカル サービス アカウント コンテキストでその命令を実行する必要があります。 このコンテキストでは、DLL はローカル コンピューターに対する最小限の特権を持ちます。これは通常、通常のユーザー コンテキストよりも小さくなります。

無線サポート DLL は、アクションを実行する前に、対応するハードウェアが存在することを確認するために適切なチェックを実行する必要があります。 対応するハードウェアがシステムで見つからない場合、無線サポート DLL は適切なエラー コードを返す必要があります。

Bluetooth ソフトウェア無線サンプル ソース

Registry File

Windows レジストリ エディター バージョン 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BthServ]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BthServ\Parameters]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BthServ\Parameters\Radio Support]

"SupportDLL"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,\

00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\

72,00,73,00,75,00,70,00,70,00,6f,00,72,00,74,00,2e,00,64,00,6c,00,6c,00,00,\

00

MAKEFILE

###### --------------------------------------------------------------------

######

###### Copyright(c) Microsoft Corp., 2012

######

###### --------------------------------------------------------------------

!ifdef NTMAKEENV

!INCLUDE $(NTMAKEENV)\makefile.def

!else # NTMAKEENV

!error - You forgot to set your build environment

!endif

RSupport.cpp

/*++ Copyright (c) Microsoft Corporation. All rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY

KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR

PURPOSE.

Module Name:

Rsupport.cpp

Abstract:

--*/

DWORD WINAPI IsBluetoothRadioEnabled(BOOL* pfEnabled)

{

// If the radio is enabled, set *pfEnabled = TRUE else set *pfEnabled = FALSE

return ERROR_SUCCESS;

}

DWORD WINAPI BluetoothEnableRadio(BOOL fEnable)

{

if (fEnabled)

{

// Enable the radio here

}

else

{

// Disable the radio here

}

return ERROR_SUCCESS;

}

RSupport.def

/*++

Copyright (c) Microsoft Corporation. All rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY

KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR

PURPOSE.

Module Name:

Rsupport.def

Abstract:

--*/

LIBRARY rsupport.dll

EXPORTS

BluetoothEnableRadio

IsBluetoothRadioEnabled

Sample SOURCES

#

# Copyright 2012 - Microsoft Corporation

#

TARGETNAME=rsupport

TARGETPATH=obj

TARGETTYPE=DYNLINK

UMTYPE=windows

USE_MSVCRT=1

TARGETLIBS= \

$(SDK_LIB_PATH)\kernel32.lib \

$(SDK_LIB_PATH)\user32.lib \

C_DEFINES=-DWIN32 -DUNICODE -D_UNICODE

SOURCES = RSupport.cpp