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

📄 ipsettingsandbacklight.txt

📁 wince设置IP和背光样例代码
💻 TXT
字号:
#include <ceddk.h>
#define DD_NDIS_DEVICE_NAME TEXT("NDS0:")
#define WINCE_IOCTL_START				8
#define METHOD_OUT_DIRECT               2
#define IOCTL_NDIS_REBIND_ADAPTER (((0x17) << 16) | ((0) << 14) | ((WINCE_IOCTL_START+3) << 2) | (METHOD_OUT_DIRECT))
#define IOCTL_NDIS_GET_ADAPTER_NAMES (((0x17) << 16) | ((0) << 14) | ((WINCE_IOCTL_START+6) << 2) | (METHOD_OUT_DIRECT))
BOOL DoNdisIOControl(DWORD dwCommand, LPVOID pInBuffer,
                                  DWORD cbInBuffer, LPVOID pOutBuffer,
                                  DWORD * pcbOutBuffer);

BOOL DoNdisIOControl(DWORD dwCommand, LPVOID pInBuffer,
                                  DWORD cbInBuffer, LPVOID pOutBuffer,
                                  DWORD * pcbOutBuffer)
{
   HANDLE hNdis;
   BOOL fResult = FALSE;

   hNdis = ::CreateFile(DD_NDIS_DEVICE_NAME, GENERIC_READ | GENERIC_WRITE,
                        FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
                        0, NULL);

   if (INVALID_HANDLE_VALUE != hNdis)
   {
      fResult = ::DeviceIoControl(hNdis, dwCommand, pInBuffer, cbInBuffer,
                                  pOutBuffer, (pcbOutBuffer ? *pcbOutBuffer : 0),
                                  pcbOutBuffer, NULL);
      ::CloseHandle(hNdis);
   }

   return fResult;
}
//字符的格式为192.168.0.1
BOOL SvrSetIP( CString strIpAddress, CString strIpMask )
{
	TCHAR szAdapterNames[512];
	memset(szAdapterNames,0,sizeof(TCHAR) * 512);
	
	DWORD cbAdapterNames = sizeof(szAdapterNames);
	
	CString strAdapterName;
	if (DoNdisIOControl(IOCTL_NDIS_GET_ADAPTER_NAMES, NULL, 0,
		&szAdapterNames, &cbAdapterNames))
	{
		strAdapterName = szAdapterNames;
	}
	else
	{
		//无法获得名字
		return FALSE;
	}

	HKEY hKey = NULL;
	TCHAR szMetricRegistryPath[MAX_PATH];
	::_stprintf(szMetricRegistryPath, _T("Comm\\%s\\Parms\\TCPIP"), strAdapterName);
	if (ERROR_SUCCESS == ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, szMetricRegistryPath,
										 NULL, NULL, 0, KEY_WRITE, NULL, &hKey, NULL))
	{
		TCHAR multiSz[256];
		memset(multiSz,0,256* sizeof(TCHAR));
		::_tcscpy(multiSz, (LPCTSTR)strIpAddress);
		multiSz[::_tcslen(multiSz)+1] = _T('\0'); // Multi sz needs an extra null

		::RegSetValueEx(hKey, 
		  _T("IPAddress"), 
		  NULL, 
		  REG_MULTI_SZ,
		  (BYTE*)multiSz,
		  (_tcslen(multiSz)+2) * sizeof(TCHAR));
		

		memset(multiSz,0,256* sizeof(TCHAR));
		::_tcscpy(multiSz, (LPCTSTR)strIpMask);
		multiSz[::_tcslen(multiSz)+1] = _T('\0'); // Multi sz needs an extra null

		::RegSetValueEx(hKey, 
		  _T("Subnetmask"), 
		  NULL, 
		  REG_MULTI_SZ,
		  (BYTE*)multiSz,
		  (_tcslen(multiSz)+2) * sizeof(TCHAR));

		::RegCloseKey(hKey);
	}

	TCHAR multiSz[256];
	memset(multiSz,0,256* sizeof(TCHAR));
	::_tcscpy(multiSz, (LPCTSTR)strAdapterName);
	multiSz[::_tcslen(multiSz)+1] = _T('\0'); // Multi sz needs an extra null
	DoNdisIOControl(IOCTL_NDIS_REBIND_ADAPTER, multiSz,
		(_tcslen(multiSz)+2) * sizeof(TCHAR),NULL, NULL);	

	RegFlushKey( HKEY_LOCAL_MACHINE);
	return TRUE;

}




//设置背光
//backlight
#define GPGCON  0x56000060
#define GPGDAT  0x56000064
//读写I/O口的函数
void WritePort(DWORD Addr,USHORT value)
{
    PUSHORT iPort;
	PHYSICAL_ADDRESS ty;
	ty.LowPart=Addr;
	ty.HighPart=0;
	iPort=(PUSHORT)MmMapIoSpace(ty,1,FALSE);
	WRITE_PORT_USHORT((PUSHORT)(iPort), value);
	MmUnmapIoSpace(iPort,1);
}

USHORT ReadPort(DWORD Addr)
{
	USHORT nData;
    PUSHORT iPort;
	PHYSICAL_ADDRESS ty;
	ty.LowPart=Addr;
	ty.HighPart=0;
	iPort=(PUSHORT)MmMapIoSpace(ty,1,FALSE);
	nData =READ_PORT_USHORT((PUSHORT)iPort);
	MmUnmapIoSpace(iPort,1);
	return nData;
}
//开背光
void BacklightOn()
{
	USHORT value = ReadPort(GPGDAT);
	value &= ~(1 << 4); //backlight on
    WritePort (GPGDAT,value);

}
//关背光
void BacklightOff()
{
	USHORT value = ReadPort(GPGDAT);
	value |= ( 1 << 4); //backlight off
    WritePort (GPGDAT,value);

}

⌨️ 快捷键说明

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