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

📄 initproc.c

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 C
📖 第 1 页 / 共 5 页
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
/** @file initproc.c
 *  @This module provides the implementaion of NDIS miniport 
 *   dirver initialization 
 *
 *  Copyright (c) Marvell Semiconductor, Inc. 
 */
 
/*
===============================================================================
            INCLUDE FILES
===============================================================================
*/
#include "precomp.h"
 
// jeff.spurgat 2003-04-04
#ifdef UNDER_CE
// jeff.spurgat 2003-04-15
// cardservices support
#include <cardserv.h>
#include <cardapi.h>
#include <tuple.h>
#endif


//#if DBG
unsigned char lptRegImage1 = 0;
unsigned char lptRegImage2 = 0;

// PJG: Note if using igxbug in precompiled header
// you need to define the debug vars manually.
LARGE_INTEGER    t1Time, t1LastTime, t1CurTime;
LARGE_INTEGER    t2Time, t2LastTime, t2CurTime;
LARGE_INTEGER    t3Time, t3LastTime, t3CurTime;
LARGE_INTEGER    t4Time, t4LastTime, t4CurTime;
LARGE_INTEGER    t5Time, t5LastTime, t5CurTime;
LARGE_INTEGER    t6Time, t6LastTime, t6CurTime;

LARGE_INTEGER    curTime;
LARGE_INTEGER    lastTime;
ULONG DebugLevel = DBG_DEFAULT; 
LARGE_INTEGER isrTimeDelay;  

/// extern CARD_SOCKET_HANDLE GobalHSock;

#ifdef UNDER_CE
FILE     *MrvDbgfp = NULL;
#endif // #ifdef UNDER_CE
                              
//#endif 


//#define NEW_SCHEME_TO_GET_RESOURCES

/*
===============================================================================
            CODED PUBLIC VARIABLE
===============================================================================
*/

//
//          Registry table, works with INF file and ReadRegistryInfo() to provide a 
//          convenient way for device specific registry information reading. 
//
static REGINFOTAB MrvDrvRegInfoTab[] = { 
	///{NDIS_STRING_CONST("DesiredSSID"),        "DesiredSSID",         1, FIELD_OFFSET(MRVDRV_ADAPTER, DesiredSSID)+4,            32},
	///{NDIS_STRING_CONST("NetWorkMode"),       "NetworkMode",         0, FIELD_OFFSET(MRVDRV_ADAPTER, InfrastructureMode),        4},	 
	///{NDIS_STRING_CONST("AuthMode"),            "AuthMode",            0, FIELD_OFFSET(MRVDRV_ADAPTER, AuthenticationMode),        4},
	///{NDIS_STRING_CONST("TxAntenna"),            "TxAntenna",           3, FIELD_OFFSET(MRVDRV_ADAPTER, TxAntenna),                 4},
	///{NDIS_STRING_CONST("RxAntenna"),          "RxAntenna",           3, FIELD_OFFSET(MRVDRV_ADAPTER, RxAntenna),                 4},
	///{NDIS_STRING_CONST("Channel"),            "Channel",             0, FIELD_OFFSET(MRVDRV_ADAPTER, Channel),                   4},
	///{NDIS_STRING_CONST("DataRate"),           "DataRate",            3, FIELD_OFFSET(MRVDRV_ADAPTER, DataRate),                  4},
	{NDIS_STRING_CONST("FragThsd"),           "FragThsd",            0, FIELD_OFFSET(MRVDRV_ADAPTER, FragThsd),                  4},
	{NDIS_STRING_CONST("RTSThsd"),            "RTSThsd",             0, FIELD_OFFSET(MRVDRV_ADAPTER, RTSThsd),                   4},
       ///{NDIS_STRING_CONST("MaxChanTime"),        "MaxChanTime",         0, FIELD_OFFSET(MRVDRV_ADAPTER, DefaultPerChannelScanTime), 4},
	///{NDIS_STRING_CONST("Preamble"),           "Preamble",            0, FIELD_OFFSET(MRVDRV_ADAPTER, Preamble),                  4},
       {NDIS_STRING_CONST("PowerMode"),          "PowerMode",           0, FIELD_OFFSET(MRVDRV_ADAPTER, PSMode),                    4},
       ///{NDIS_STRING_CONST("RoamingMode"),        "RoamingMode",         0, FIELD_OFFSET(MRVDRV_ADAPTER, RoamingMode),               1},
       ///{NDIS_STRING_CONST("RoamingRSSILevel"),   "RoamingRSSILevel",    0, FIELD_OFFSET(MRVDRV_ADAPTER, RoamingLevel),              1},
       ///{NDIS_STRING_CONST("RoamingPeriod"),      "RoamingPeriod",       0, FIELD_OFFSET(MRVDRV_ADAPTER, RoamingPeriod),             4},
       {NDIS_STRING_CONST("BTMode"),             	"BTMode",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTMode),                    4},
       {NDIS_STRING_CONST("BTAntennaConfig"),    	"BTAntennaConfig",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTAntennaConfig),           4},
       {NDIS_STRING_CONST("BTFrequencyConfig"),  "BTFrequencyConfig",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTFrequencyConfig),         4},
       {NDIS_STRING_CONST("BTWLANTxPriorityLo"), "BTWLANTxPriorityLo",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTWLANTxPriorityLo),        4},
       {NDIS_STRING_CONST("BTWLANTxPriorityHi"), 	"BTWLANTxPriorityHi",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTWLANTxPriorityHi),        4},
       {NDIS_STRING_CONST("BTWLANRxPriorityLo"),"BTWLANRxPriorityLo",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTWLANRxPriorityLo),        4},
       {NDIS_STRING_CONST("BTWLANRxPriorityHi"), "BTWLANRxPriorityHi",       0, FIELD_OFFSET(MRVDRV_ADAPTER, BTWLANRxPriorityHi),        4},
	{NDIS_STRING_CONST("QOS"),                "QOS",             	 0, FIELD_OFFSET(MRVDRV_ADAPTER, EnableQOS),                 4},
	///{NDIS_STRING_CONST("WepStatus"),          "WepStatus",           0, FIELD_OFFSET(MRVDRV_ADAPTER, WEPStatus),                 4},
	///{NDIS_STRING_CONST("TxWepKey"),           "TxWepKey",            0, FIELD_OFFSET(MRVDRV_ADAPTER, TxWepKey),                  4},
	///{NDIS_STRING_CONST("TxPower"),            "TxPower",             0, FIELD_OFFSET(MRVDRV_ADAPTER, TxPower),                   4},
	///{NDIS_STRING_CONST("WepKey1"),            "WepKey1",             1, FIELD_OFFSET(MRVDRV_ADAPTER, WepKey1)+12,               16},
	///{NDIS_STRING_CONST("WepKey2"),            "WepKey2",             1, FIELD_OFFSET(MRVDRV_ADAPTER, WepKey2)+12,               16},
	///{NDIS_STRING_CONST("WepKey3"),            "WepKey3",             1, FIELD_OFFSET(MRVDRV_ADAPTER, WepKey3)+12,               16},
	///{NDIS_STRING_CONST("WepKey4"),            "WepKey4",             1, FIELD_OFFSET(MRVDRV_ADAPTER, WepKey4)+12,               16}, 
       {NDIS_STRING_CONST("AdhocDefaultBand"),   "AdhocDefaultBand"   , 0, FIELD_OFFSET(MRVDRV_ADAPTER, AdhocDefaultBand),          4},
       {NDIS_STRING_CONST("AdhocDefaultChannel"),"AdhocDefaultChannel", 0, FIELD_OFFSET(MRVDRV_ADAPTER, AdhocDefaultChannel),       4},    
	{NDIS_STRING_CONST("AdhocWiFiDataRate"),  "AdhocWiFiDataRate"  , 0, FIELD_OFFSET(MRVDRV_ADAPTER, AdhocWiFiDataRate),         4},
#ifdef ACTIVE_ROAMING
       {NDIS_STRING_CONST("bActiveRoamingScanOneChannel"),		"bActiveRoamingScanOneChannel",		0, FIELD_OFFSET(MRVDRV_ADAPTER, bActiveRoamingScanOneChannel),				4},
       {NDIS_STRING_CONST("bLinkLostScanOneChannel"),		"bLinkLostScanOneChannel",		0, FIELD_OFFSET(MRVDRV_ADAPTER, bLinkLostScanOneChannel),				4},
	{NDIS_STRING_CONST("ulRSSIThresholdTimer"),	"ulRSSIThresholdTimer",	0, FIELD_OFFSET(MRVDRV_ADAPTER, ulRSSIThresholdTimer),		4},
	{NDIS_STRING_CONST("RSSI_Range"),			"RSSI_Range",			0, FIELD_OFFSET(MRVDRV_ADAPTER, RSSI_Range),				4},
#endif 
#ifdef ENABLE_802_11D
       {NDIS_STRING_CONST("Enable80211D"),       "Enable80211D"  ,      0, FIELD_OFFSET(MRVDRV_ADAPTER, Enable80211D),         	 4},
       {NDIS_STRING_CONST("DefaultRegion"),      "DefaultRegion"  ,     0, FIELD_OFFSET(MRVDRV_ADAPTER, DefaultRegion),         	 4},
       {NDIS_STRING_CONST("DefaultBand"),        "DefaultBand"  ,       0, FIELD_OFFSET(MRVDRV_ADAPTER, DefaultBand),         		 4},
#endif 
	{NDIS_STRING_CONST("AvoidScanTime"),       "AvoidScanTime"  ,      0, FIELD_OFFSET(MRVDRV_ADAPTER, AvoidScanTime),      	 4},
#ifdef BG_SCAN
       {NDIS_STRING_CONST("bActiveRoamingwithBGSCAN"),	"bActiveRoamingwithBGSCAN",	0, FIELD_OFFSET(MRVDRV_ADAPTER, bActiveRoamingwithBGSCAN),				4},
#endif 
	};

// jeff.spurgat 20003-04-02
// Registry settings for Install_Driver function (required in WinCE)
//
// The following settings are set as default:
//
// [HKEY_LOCAL_MACHINE\Comm\CF8385PN]
//   "DisplayName"="Marvell MrvDrv CF 802.11b"
//   "Group"="NDIS"
//   "ImagePath"="CF8385PN.dll"
// 
// [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\CF8385PN]
//   "Dll"="NDIS.dll"
//   "Entry"="NdisPCIBusDeviceInit"
//   "IsrDll"="giisr.dll"
//   "IsrHandler"="ISRHandler"
//   "Class"=dword:02
//   "SubClass"=dword:00
//   "ProgIF"=dword:0
//   "PortIsIO"=dword:0
//   "PortOffset"=dword:00
//   "PortSize"=dword:0
//   "PortMask"=dword:00000000
//   "VendorID"=multi_sz:"0000"
//   "DeviceID"=multi_sz:"0000"
//
// [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\CF8385PN]
//   "Dll"="ndis.dll"
//   "Prefix"="NDS"
//   "Miniport"="CF8385PN"
//
// [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect\101]
//   "Dll"="CF8385PN.dll"
//   "Entry"="DetectMrvDrv"
//
#ifdef UNDER_CE
// CompactFlash interface

#ifdef MRV_CHIP_8385H
// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\CF8385H]
REG_VALUE_DESCR PcmciaCF8385HKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("ndis.dll"))},
	{(TEXT ("Prefix")),				REG_SZ,			(PBYTE) (TEXT("NDS"))},
	{(TEXT ("Miniport")),			REG_SZ,			(PBYTE) (TEXT("CF8385H"))},
	{NULL,							0,				NULL}
};

// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect\101]
REG_VALUE_DESCR PcmciaDetectKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("CF8385H.dll"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("DetectMrvDrv"))},
	{NULL,							0,				NULL}
};

// PCI interface

// Values for [HKEY_LOCAL_MACHINE\Comm\CF8385H]
REG_VALUE_DESCR CommCF8385HKeyValues[] = {
	{(TEXT ("DisplayName")),		REG_SZ,			(PBYTE) (TEXT("Marvell CF8385H Wireless Card"))},
	{(TEXT ("Group")),				REG_SZ,			(PBYTE) (TEXT("NDIS"))},
	{(TEXT ("ImagePath")),			REG_SZ,			(PBYTE) (TEXT("CF8385H.dll"))},
	{NULL,							0,				NULL}
};

// [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\CF8385H]
REG_VALUE_DESCR DriversCF8385HPciKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("NDIS.dll"))},
	{(TEXT ("Class")),				REG_DWORD,		(PBYTE) 2},
	{(TEXT ("SubClass")),			REG_DWORD,		(PBYTE) 0x80},
	{(TEXT ("ProgIF")),				REG_DWORD,		(PBYTE) 0},
	{(TEXT ("VendorID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1638"))},
	{(TEXT ("DeviceID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1100"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("NdisPCIBusDeviceInit"))},
//	{(TEXT ("Transceiver")),		REG_DWORD,		(PBYTE) 3},
	{(TEXT ("IsrDll")),				REG_SZ,			(PBYTE) (TEXT("giisr.dll"))},
	{(TEXT ("IsrHandler")),			REG_SZ,			(PBYTE) (TEXT("ISRHandler"))},
	{(TEXT ("PortIsIO")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortOffset")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortSize")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortMask")),			REG_DWORD,		(PBYTE) 0},
	{NULL,							0,				NULL}
};

PREG_VALUE_DESCR Values[] = {
	// CompactFlash interface
	PcmciaCF8385HKeyValues,
	PcmciaDetectKeyValues,

	// PCI interface
    	DriversCF8385HPciKeyValues,
    	CommCF8385HKeyValues,
};

LPWSTR KeyNames[] = {
	(TEXT ("Drivers\\PCMCIA\\CF8385H")),
	(TEXT ("Drivers\\PCMCIA\\Detect\\101")),

    	(TEXT ("Drivers\\BuiltIn\\PCI\\Template\\CF8385H")),
    	(TEXT ("Comm\\CF8385H")),
};

#endif // #ifdef MRV_CHIP_8385H

#ifdef MRV_CHIP_8385PN
// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\CF8385PN]
REG_VALUE_DESCR PcmciaCF8385PNKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("ndis.dll"))},
	{(TEXT ("Prefix")),				REG_SZ,			(PBYTE) (TEXT("NDS"))},
	{(TEXT ("Miniport")),			REG_SZ,			(PBYTE) (TEXT("CF8385PN"))},
	{NULL,							0,				NULL}
};

// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect\101]
REG_VALUE_DESCR PcmciaDetectKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("CF8385PN.dll"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("DetectMrvDrv"))},
	{NULL,							0,				NULL}
};

// PCI interface

// Values for [HKEY_LOCAL_MACHINE\Comm\CF8385PN]
REG_VALUE_DESCR CommCF8385PNKeyValues[] = {
	{(TEXT ("DisplayName")),		REG_SZ,			(PBYTE) (TEXT("Marvell CF8385 Wireless Card"))},
	{(TEXT ("Group")),				REG_SZ,			(PBYTE) (TEXT("NDIS"))},
	{(TEXT ("ImagePath")),			REG_SZ,			(PBYTE) (TEXT("CF8385PN.dll"))},
	{NULL,							0,				NULL}
};

// [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\CF8385PN]
REG_VALUE_DESCR DriversCF8385PNPciKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("NDIS.dll"))},
	{(TEXT ("Class")),				REG_DWORD,		(PBYTE) 2},
	{(TEXT ("SubClass")),			REG_DWORD,		(PBYTE) 0x80},
	{(TEXT ("ProgIF")),				REG_DWORD,		(PBYTE) 0},
	{(TEXT ("VendorID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1638"))},
	{(TEXT ("DeviceID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1100"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("NdisPCIBusDeviceInit"))},
//	{(TEXT ("Transceiver")),		REG_DWORD,		(PBYTE) 3},
	{(TEXT ("IsrDll")),				REG_SZ,			(PBYTE) (TEXT("giisr.dll"))},
	{(TEXT ("IsrHandler")),			REG_SZ,			(PBYTE) (TEXT("ISRHandler"))},
	{(TEXT ("PortIsIO")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortOffset")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortSize")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortMask")),			REG_DWORD,		(PBYTE) 0},
	{NULL,							0,				NULL}
};

PREG_VALUE_DESCR Values[] = {
	// CompactFlash interface
	PcmciaCF8385PNKeyValues,
	PcmciaDetectKeyValues,

	// PCI interface
    	DriversCF8385PNPciKeyValues,
    	CommCF8385PNKeyValues,
};

LPWSTR KeyNames[] = {
	(TEXT ("Drivers\\PCMCIA\\CF8385PN")),
	(TEXT ("Drivers\\PCMCIA\\Detect\\101")),

    	(TEXT ("Drivers\\BuiltIn\\PCI\\Template\\CF8385PN")),
    	(TEXT ("Comm\\CF8385PN")),
};

#endif // #ifdef MRV_CHIP_8385PN

#ifdef MRV_CHIP_8381PN
// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\CF8381PN]
REG_VALUE_DESCR PcmciaCF8381PNKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("ndis.dll"))},
	{(TEXT ("Prefix")),				REG_SZ,			(PBYTE) (TEXT("NDS"))},
	{(TEXT ("Miniport")),			REG_SZ,			(PBYTE) (TEXT("CF8381PN"))},
	{NULL,							0,				NULL}
};

// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect\101]
REG_VALUE_DESCR PcmciaDetectKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("CF8381PN.dll"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("DetectMrvDrv"))},
	{NULL,							0,				NULL}
};

// PCI interface

// Values for [HKEY_LOCAL_MACHINE\Comm\CF8381PN]
REG_VALUE_DESCR CommCF8381PNKeyValues[] = {
	{(TEXT ("DisplayName")),		REG_SZ,			(PBYTE) (TEXT("Marvell CF8381PN Wireless Card"))},
	{(TEXT ("Group")),				REG_SZ,			(PBYTE) (TEXT("NDIS"))},
	{(TEXT ("ImagePath")),			REG_SZ,			(PBYTE) (TEXT("CF8381PN.dll"))},
	{NULL,							0,				NULL}
};

// [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\CF8381PN]
REG_VALUE_DESCR DriversCF8381PNPciKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("NDIS.dll"))},
	{(TEXT ("Class")),				REG_DWORD,		(PBYTE) 2},
	{(TEXT ("SubClass")),			REG_DWORD,		(PBYTE) 0x80},
	{(TEXT ("ProgIF")),				REG_DWORD,		(PBYTE) 0},
	{(TEXT ("VendorID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1638"))},
	{(TEXT ("DeviceID")),			REG_MULTI_SZ,	(PBYTE) (TEXT("1100"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("NdisPCIBusDeviceInit"))},
//	{(TEXT ("Transceiver")),		REG_DWORD,		(PBYTE) 3},
	{(TEXT ("IsrDll")),				REG_SZ,			(PBYTE) (TEXT("giisr.dll"))},
	{(TEXT ("IsrHandler")),			REG_SZ,			(PBYTE) (TEXT("ISRHandler"))},
	{(TEXT ("PortIsIO")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortOffset")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortSize")),			REG_DWORD,		(PBYTE) 0},
	{(TEXT ("PortMask")),			REG_DWORD,		(PBYTE) 0},
	{NULL,							0,				NULL}
};

PREG_VALUE_DESCR Values[] = {
	// CompactFlash interface
	PcmciaCF8381PNKeyValues,
	PcmciaDetectKeyValues,

	// PCI interface
    	DriversCF8381PNPciKeyValues,
    	CommCF8381PNKeyValues,
};

LPWSTR KeyNames[] = {
	(TEXT ("Drivers\\PCMCIA\\CF8381PN")),
	(TEXT ("Drivers\\PCMCIA\\Detect\\101")),

    	(TEXT ("Drivers\\BuiltIn\\PCI\\Template\\CF8381PN")),
    	(TEXT ("Comm\\CF8381PN")),
};

#endif // #ifdef MRV_CHIP_8381PN


#ifdef MRV_CHIP_8381P
// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\CF8381P]
REG_VALUE_DESCR PcmciaCF8381PKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("ndis.dll"))},
	{(TEXT ("Prefix")),				REG_SZ,			(PBYTE) (TEXT("NDS"))},
	{(TEXT ("Miniport")),			REG_SZ,			(PBYTE) (TEXT("CF8381P"))},
	{NULL,							0,				NULL}
};

// Values for [HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect\101]
REG_VALUE_DESCR PcmciaDetectKeyValues[] = {
	{(TEXT ("Dll")),				REG_SZ,			(PBYTE) (TEXT("CF8381P.dll"))},
	{(TEXT ("Entry")),				REG_SZ,			(PBYTE) (TEXT("DetectMrvDrv"))},
	{NULL,							0,				NULL}
};

// PCI interface

⌨️ 快捷键说明

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