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

📄 wcestreambt.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.
//
// WceStreambt.cpp : Defines the entry point for the DLL application.
//

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

//Global variables
HMODULE v_hPcmciaDll;
HMODULE v_hCeddkDll;

CRITICAL_SECTION           g_CS;
PWSSBTCLIENT_CONTEXT       g_pCC = NULL;

extern REGISTERCLIENT      v_pfnCardRegisterClient;
extern DEREGISTERCLIENT    v_pfnCardDeregisterClient;
extern GETFIRSTTUPLE       v_pfnCardGetFirstTuple;
extern GETNEXTTUPLE        v_pfnCardGetNextTuple;
extern GETTUPLEDATA        v_pfnCardGetTupleData;
extern GETPARSEDTUPLE      v_pfnCardGetParsedTuple;
extern REQUESTWINDOW       v_pfnCardRequestWindow;
extern RELEASEWINDOW       v_pfnCardReleaseWindow;
extern MAPWINDOW           v_pfnCardMapWindow;
extern REQUESTCONFIG       v_pfnCardRequestConfiguration;
extern RELEASECONFIG       v_pfnCardReleaseConfiguration;
extern REQUESTIRQ          v_pfnCardRequestIRQ;
extern RELEASEIRQ          v_pfnCardReleaseIRQ;
extern GETSTATUS           v_pfnCardGetStatus;

WRITEPORTUCHAR		v_pfnWritePortUchar=NULL;
READPORTUCHAR		v_pfnReadPortUchar=NULL;

#if defined(DEBUG)

DBGPARAM dpCurSettings = {
    TEXT("wcestreambt"), {
    TEXT("Init"),TEXT("Trace"),TEXT("Read"),TEXT("Write"),
    TEXT("Interrupts"),TEXT(""),TEXT(""),TEXT(""),
    TEXT(""),TEXT(""),TEXT(""),TEXT(""),
    TEXT(""),TEXT(""),TEXT("Warning"),TEXT("Error") },
    0xc001
}; 

#endif

BOOL
InitPcmciaDll(VOID)
{

    v_hPcmciaDll = LoadLibrary(TEXT("PCMCIA.DLL"));
	v_hCeddkDll = LoadLibrary(TEXT("CEDDK.DLL"));
    if (v_hPcmciaDll) {
        v_pfnCardRegisterClient =       (REGISTERCLIENT)GetProcAddress(v_hPcmciaDll, TEXT("CardRegisterClient"));
        v_pfnCardDeregisterClient =     (DEREGISTERCLIENT)GetProcAddress(v_hPcmciaDll, TEXT("CardDeregisterClient"));
        v_pfnCardGetFirstTuple =        (GETFIRSTTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetFirstTuple"));
        v_pfnCardGetNextTuple =         (GETNEXTTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetNextTuple"));
        v_pfnCardGetTupleData =         (GETTUPLEDATA)GetProcAddress(v_hPcmciaDll, TEXT("CardGetTupleData"));
        v_pfnCardGetParsedTuple =       (GETPARSEDTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetParsedTuple"));
        v_pfnCardRequestWindow =        (REQUESTWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestWindow"));
        v_pfnCardReleaseWindow =        (RELEASEWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseWindow"));
        v_pfnCardMapWindow =            (MAPWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardMapWindow"));
        v_pfnCardRequestConfiguration = (REQUESTCONFIG)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestConfiguration"));
        v_pfnCardReleaseConfiguration = (RELEASECONFIG)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseConfiguration"));
        v_pfnCardRequestIRQ =           (REQUESTIRQ)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestIRQ"));
        v_pfnCardReleaseIRQ =           (RELEASEIRQ)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseIRQ"));
        v_pfnCardGetStatus =            (GETSTATUS)GetProcAddress(v_hPcmciaDll, TEXT("CardGetStatus"));
    }
    if ((v_hPcmciaDll == NULL) ||
        (v_pfnCardRegisterClient == NULL) ||
        (v_pfnCardDeregisterClient == NULL) ||
        (v_pfnCardGetFirstTuple == NULL) ||
        (v_pfnCardGetNextTuple == NULL) ||
        (v_pfnCardGetTupleData == NULL) ||
        (v_pfnCardGetParsedTuple == NULL) ||
        (v_pfnCardRequestWindow == NULL) ||
        (v_pfnCardReleaseWindow == NULL) ||
        (v_pfnCardMapWindow == NULL) ||
        (v_pfnCardRequestConfiguration == NULL) ||
        (v_pfnCardReleaseConfiguration == NULL) ||
        (v_pfnCardRequestIRQ == NULL) ||
        (v_pfnCardReleaseIRQ == NULL) ||
        (v_pfnCardGetStatus == NULL)) {
        DEBUGMSG(ZONE_ERROR, (L"WceStreamBT: InitPcmciaDll() failed!\r\n"));
        return FALSE;
    }

	if(v_hCeddkDll)
	{
		v_pfnWritePortUchar =			(WRITEPORTUCHAR)GetProcAddress(v_hCeddkDll,TEXT("WRITE_PORT_UCHAR"));
		v_pfnReadPortUchar =			(READPORTUCHAR)GetProcAddress(v_hCeddkDll,TEXT("READ_PORT_UCHAR"));
	}

	if ((v_hCeddkDll == NULL) ||
        (v_pfnWritePortUchar == NULL) ||
		(v_pfnReadPortUchar == NULL))
	{
        DEBUGMSG(ZONE_ERROR, (L"Failed getting procaddress for Write_PORT_UCHAR\r\n"));
		return FALSE;
	}

    return TRUE;
}   // InitPcmciaDll


BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		    DisableThreadLibraryCalls((HMODULE) hModule);
			InitializeCriticalSection (&g_CS);
			DEBUGREGISTER((HMODULE)hModule);
			break;
		case DLL_PROCESS_DETACH:
			DeleteCriticalSection (&g_CS);
			break;
    }
	return TRUE;
}

⌨️ 快捷键说明

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