Loading a Bluetooth Extension Layer (Windows CE 5.0)
With the installable device driver architecture you must compile the extension layer as a DLL. To use the extension layer the application must load and then create a driver instance by using standard stream driver procedures.
The L2capapi sample located in the %_WINCEROOT%\Public\Common\Oak\Drivers\Bluetooth\Sample\L2capapi directory, shows how an application can use the L2capdev extension layer DLL.
To load the extension layer from your application
Register the DLL by calling the RegisterDevice function.
The following example code shows a function L2CAPLoad, that is defined in the L2capapi sample. This function registers the L2CAP extension layer, L2capdev.dll by calling RegisterDevice and sets the appropriate registry key values.
int L2CAPLoad (void) { HANDLE hDevice = RegisterDevice (L"L2C", 0, L"l2capdev.dll", 0); if (hDevice) { HKEY hk; if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_BASE, L"Software\\Microsoft\\Bluetooth", 0, KEY_READ, &hk)) { RegSetValueEx (hk, L"l2capdev_handle", 0, REG_DWORD, (LPBYTE)&hDevice, sizeof(hDevice)); RegCloseKey (hk); } } return hDevice != NULL ? ERROR_SUCCESS : ERROR_SERVICE_NOT_ACTIVE; }
To create an instance of the driver, call the CreateFile function.
The following example code shows a function Initialize, that is declared in the L2capapi sample. This function creates an instance of the driver by calling CreateFile.
HANDLE hDev = INVALID_HANDLE_VALUE; int Initialize (void) { if (hDev != INVALID_HANDLE_VALUE) return TRUE; hDev = CreateFile (L"L2C0:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); return (hDev != INVALID_HANDLE_VALUE) ? TRUE : FALSE; }
See Also
Creating a Bluetooth Stack Extension Layer | Bluetooth OS Design Development | Host Controller Interface | How to Develop and Load a Bluetooth HCI Stack Extension Layer
Send Feedback on this topic to the authors