📄 wcestreambt.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 + -