阅读:1544回复:11
设置系统的时间?
请问在驱动程序中,哪一个函数能够直接设置系统的时间?
请各位高手指点一下!! |
|
沙发#
发布于:2005-04-19 14:40
请问在驱动程序中,哪一个函数能够直接设置系统的时间? 转贴一个。。。 http://www.blogdriver.com/qingbrother/292863.html |
|
|
板凳#
发布于:2005-04-19 17:32
高手,不对啊,我看了你转发的文章,我在驱动程序中如下声明了该函数,但是,程序编译时有错误;能够看一下这个函数应该
怎样声明,才能够把他使用起来?谢谢啦!! extern BOOL SetSystemTime(CONST SYSTEMTIME *lpSystemTime); 我是这样调用的,是编译有错。编译器认不到BOOL 类型。 NTSTATUS SDDevice::IOCTL_SET_SYSTEM_TIME_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; SYSTEMTIME time; time.wYear = 2000; time.wMonth = 1; time.wDayOfWeek = 1; SetSystemTime(&time); I.Information() = 0; return status; } error C2146: syntax error : missing \';\' before identifier \'SetSystemTime\' C:\\Documents and Settings\\Administrator\\桌面\\418\\SD2407\\sys\\SD2407Device.cpp(1298) : fatal error C1004: unexpected end of file found Error executing cl.exe. SD2407.sys - 2 error(s), 0 warning(s) |
|
地板#
发布于:2005-04-19 17:48
我也没有用过这个函数的,,不是说在USER32。DLL里的吗。。。
你找到这个函数对应的声明的头文件,,包进去。。还有定义那个结构的文件哦。。。。 bool改成BOOLEAN 试试。。 还有啊。。你SetSystemTime(&time);不对吧? 改成SetSystemTime(time);吧,,应该。。。 |
|
|
地下室#
发布于:2005-04-19 17:59
刚注意到哦,,你这是用DS写驱动那?
那这个函数可以在DS驱动开发中用吗?。。。这可是个用户模式的函数。。。好像不可以这么用的啊。。。。 嗯!,,应该不可以用的,,没有试验过。。呵呵 |
|
|
5楼#
发布于:2005-04-19 18:58
对应该不能够在驱动程序中调用它,我现在还想问一个问题就是驱动
程序中又没有能够直接修改系统时间的函数,因为在应用程都提供了 SetSystemTime()函数可以设置系统时间,我总觉得在驱动程序中 也应该有这个功能的函数才行啊,我看了ddk和ds的帮助文档,只有ddk里说了可以调用函数KeQuerySystemTime()来读取系统的时间,可是就没有找到能够设置系统时间的函数? |
|
6楼#
发布于:2005-04-19 20:41
就得没有直接调用的函数,,那就不好弄了。。。
你非要完成这个功能吗?。。。让那些搞核心编程的老大们。。 来看 看吧。。。。这东西,,俺不是很懂的了。。呵呵。。。 |
|
|
7楼#
发布于:2005-04-19 21:38
ZwSetSystemTime
ZwSetSystemTime sets the system time. NTSYSAPI NTSTATUS NTAPI ZwSetSystemTime( IN PLARGE_INTEGER NewTime, OUT PLARGE_INTEGER OldTime OPTIONAL ); Parameters NewTime Points to a variable that specifies the new time of day in the standard time format (that is, the number of 100-nanosecond intervals since January 1, 1601). OldTime Optionally points to a variable that receives the old time of day in the standard time format (that is, the number of 100-nanosecond intervals since January 1, 1601). Return Value Returns STATUS_SUCCESS or an error status, such as STATUS_PRIVILEGE_NOT_HELD. Related Win32 Functions SetSystemTime. Remarks SeSystemtimePrivilege is required to set the system time. |
|
8楼#
发布于:2005-04-20 10:52
可惜,没有早点看到这个贴子,否则分就是我的啦!
|
|
|
9楼#
发布于:2005-04-20 11:18
ZwSetSystemTime 老歌从哪里找的,DDK文档中没有,是不是在Native Api那本书里,我找到一大堆,KeSetSystemTime,NtSetSystemTime,ZwSetSystemTime,不知他们被输出了吗? |
|
|
10楼#
发布于:2005-04-20 14:47
输出了,但DDK的头文件中没有相应的声明,你要自己写。(拷贝、粘贴)。 :)
|
|
|
11楼#
发布于:2005-05-03 13:33
//OK THROUGH VC6.0
// setsystemtime.cpp : Defines the entry point for the console application. // #include \"stdafx.h\" #include \"setsystemtime.h\" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T(\"Fatal Error: MFC initialization failed\") << endl; nRetCode = 1; } else { // TODO: code your application\'s behavior here. CFile Rfile,Rfile2; CString strHello; if (Rfile.Open(_T(\"d:\\\\1.txt\"),CFile::modeRead)) { char st[20]; int stlen,m_Year,m_Month,m_Day,m_Hour,m_Minute,m_Second; memset(st,\'\\0\',20); stlen = Rfile.Read(&st,20); Rfile.Close(); Rfile.Remove(_T(\"d:\\\\1.txt\")); cout << (LPCTSTR)st << endl; cout << stlen << endl; CString temp; temp = LPCTSTR(st); m_Year = atoi(temp.Left(4)); temp = temp.Right(temp.GetLength() -5); m_Month = atoi(temp.Left(2)); temp = temp.Right(temp.GetLength() -3); m_Day = atoi(temp.Left(2)); temp = temp.Right(temp.GetLength() -3); m_Hour = atoi(temp.Left(2)); temp = temp.Right(temp.GetLength() -3); m_Minute = atoi(temp.Left(2)); m_Second = 0; SYSTEMTIME systime; memset(&systime,0,sizeof(SYSTEMTIME)); systime.wYear = m_Year; systime.wMonth = m_Month; systime.wDay = m_Day; systime.wHour = m_Hour; systime.wMinute = m_Minute; systime.wSecond = m_Second; CTime ct(systime, -1); CTimeSpan cts(1,0,0,0); ct += cts; systime.wYear = ct.GetYear(); systime.wMonth = ct.GetMonth(); systime.wDay = ct.GetDay(); systime.wHour = ct.GetHour(); systime.wMinute = ct.GetMinute(); systime.wSecond = ct.GetSecond(); if (SetLocalTime(&systime)) { cout << (_T(\"Set System Time ok\")) << endl; char s_Year[4],s_Month[2],s_Day[2],s_Hour[2],s_Minute[2],s_Second[2]; itoa(systime.wYear,s_Year,10); itoa(systime.wMonth,s_Month,10); itoa(systime.wDay,s_Day,10); itoa(systime.wHour,s_Hour,10); itoa(systime.wMinute,s_Minute,10); itoa(systime.wSecond,s_Second,10); strcpy(st,s_Year); strcat(st,\"-\"); if (systime.wMonth<10) strcat(st,\"0\"); strcat(st,s_Month); strcat(st,\"-\"); if (systime.wDay<10) strcat(st,\"0\"); strcat(st,s_Day); strcat(st,\" \"); if (systime.wHour<10) strcat(st,\"0\"); strcat(st,s_Hour); strcat(st,\":\"); if (systime.wMinute<10) strcat(st,\"0\"); strcat(st,s_Minute); strcat(st,\":\"); if (systime.wSecond<10) strcat(st,\"0\"); strcat(st,s_Second); temp = LPCTSTR(st); if (Rfile2.Open(_T(\"d:\\\\1.txt\"),CFile::modeWrite | CFile::modeCreate)) { Rfile2.Write(temp,temp.GetLength()); Rfile2.Close(); } else { cout << (_T(\"Create d:\\\\1.txt failed\")) << endl; getchar(); } } else { cout << (_T(\"Set System time failed\")) << endl; getchar(); } } else { strHello.LoadString(IDS_BYE); cout << (LPCTSTR)strHello << endl; getchar(); } } return nRetCode; } |
|