⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btagconfig.cpp

📁 Windows CE操作系统中适用的蓝牙驱动程序
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//

#include <windows.h>
#include "btagpub.h"


void usage()
{
    wprintf(L"btagconfig [-audio {on,off}]\r\n");
    wprintf(L"           [-disconnect]\r\n");
    wprintf(L"           [-powersave {on,off,query}]\r\n");
    wprintf(L"           [-outvol {n}]\r\n");
    wprintf(L"           [-invol {n}]\r\n");
    wprintf(L"\r\n");
    wprintf(L"      -audio:       Turn Bluetooth audio on/off\r\n");
    wprintf(L"      -disconnect:  Close AG control connection\r\n");
    wprintf(L"      -outvol:      Set speaker volume (range: 0-15)\r\n");
    wprintf(L"      -invol:       Set mic volume (range: 0-15)\r\n");
    wprintf(L"      -powersave:   Turn power-save mode on/off\r\n");
}

int wmain(int argc, WCHAR **argv)
{

    HANDLE h = CreateFile(L"BAG0:",0,0,NULL,OPEN_EXISTING,0,NULL);
    if (INVALID_HANDLE_VALUE == h) {
        wprintf(L"Error calling CreateFile on Audio Gateway.\r\n");
        return 0;
    }

    if (argc == 2) {
        if (0 == wcscmp(argv[1], L"-disconnect")) {
            wprintf(L"Closing Bluetooth control connection...\n");
            BOOL fStatus = DeviceIoControl(h,IOCTL_AG_CLOSE_CONTROL,NULL,0,NULL,0,NULL,NULL);
            if (FALSE == fStatus) {
                wprintf(L"Operation failed: %d.\n", GetLastError());
            }
            else {
                wprintf(L"Operation successful.\n"); 
            }
            
            CloseHandle(h);
            return 0;
        }
    }
    else if (argc == 3) {
        if (0 == wcscmp(argv[1], L"-audio")) {
            if (0 == wcscmp(argv[2], L"on")) {
                wprintf(L"Opening Bluetooth audio...\n");
                
                BOOL fStatus = DeviceIoControl(h,IOCTL_AG_OPEN_AUDIO,NULL,0,NULL,0,NULL,NULL);
                if (FALSE == fStatus) {
                    wprintf(L"Operation failed: %d.\n", GetLastError());
                }
                else {
                    wprintf(L"Operation successful.\n");    
                }
            
                CloseHandle(h);
                return 0;
            }
            else if (0 == wcscmp(argv[2], L"off")) {
                wprintf(L"Closing Bluetooth audio...\n");
                
                BOOL fStatus = DeviceIoControl(h,IOCTL_AG_CLOSE_AUDIO,NULL,0,NULL,0,NULL,NULL);
                if (FALSE == fStatus) {
                    wprintf(L"Operation failed: %d.\n", GetLastError());
                }
                else {
                    wprintf(L"Operation successful.\n");    
                }
                
                CloseHandle(h);
                return 0;
            }
        }        
        else if (0 == wcscmp(argv[1], L"-powersave")) {
            if (0 == wcscmp(argv[2], L"on")) {
                wprintf(L"Turning on Power-save mode...\n");

                DWORD dwData = 1;
                
                BOOL fStatus = DeviceIoControl(h,IOCTL_AG_SET_POWER_MODE,(LPVOID)&dwData,sizeof(dwData),NULL,0,NULL,NULL);
                if (FALSE == fStatus) {
                    wprintf(L"Operation failed: %d.\n", GetLastError());
                }
                else {
                    wprintf(L"Operation successful.\n");    
                }
            
                CloseHandle(h);
                return 0;
            }
            else if (0 == wcscmp(argv[2], L"off")) {
                wprintf(L"Turning off Power-save mode...\n");

                DWORD dwData = 0;
                
                BOOL fStatus = DeviceIoControl(h,IOCTL_AG_SET_POWER_MODE,(LPVOID)&dwData,sizeof(dwData),NULL,0,NULL,NULL);
                if (FALSE == fStatus) {
                    wprintf(L"Operation failed: %d.\n", GetLastError());
                }
                else {
                    wprintf(L"Operation successful.\n");    
                }
                
                CloseHandle(h);
                return 0;
            }
            else if (0 == wcscmp(argv[2], L"query")) {
                wprintf(L"Getting Power-save mode...\n");

                DWORD dwData = 0;
                
                BOOL fStatus = DeviceIoControl(h,IOCTL_AG_GET_POWER_MODE,NULL,0,(LPVOID)&dwData,sizeof(dwData),NULL,NULL);
                if (FALSE == fStatus) {
                    wprintf(L"Operation failed: %d.\n", GetLastError());
                }
                else {
                    wprintf(L"Operation successful.  Result=%d\n", dwData?1:0);    
                }
                
                CloseHandle(h);
                return 0;
            }
        }
        else if (0 == wcscmp(argv[1], L"-outvol")) {
            int vol = _wtoi(argv[2]);

            wprintf(L"Setting speaker volume to %d...\n", vol);
            
            BOOL fStatus = DeviceIoControl(h,IOCTL_AG_SET_SPEAKER_VOL,(LPVOID)&vol,sizeof(vol),NULL,0,NULL,NULL);
            if (FALSE == fStatus) {
                wprintf(L"Operation failed: %d.\n", GetLastError());
            }
            else {
                wprintf(L"Operation successful.\n");    
            }
            
            CloseHandle(h);
            return 0;
        }
        else if (0 == wcscmp(argv[1], L"-invol")) {
            int vol = _wtoi(argv[2]);

            wprintf(L"Setting microphone volume to %d...\r\n", vol);

            BOOL fStatus = DeviceIoControl(h,IOCTL_AG_SET_MIC_VOL,(LPVOID)&vol,sizeof(vol),NULL,0,NULL,NULL);
            if (FALSE == fStatus) {
                wprintf(L"Operation failed: %d.\n", GetLastError());
            }
            else {
                wprintf(L"Operation successful.\n");    
            }
            
            CloseHandle(h);
            return 0;
        }
    }
    
    CloseHandle(h);

    usage();
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -