首页
社区
课程
招聘
有关VC++6.0
发表于: 2010-11-1 21:41 7891

有关VC++6.0

2010-11-1 21:41
7891
我在VC++6.0中不能使用OpenThread和DbgPrint两个函数,
其中OpenThread是没有发现任何H文件中定义
DbgPrint仅在OSCALLS.H中有定义,却不能用
到底是什么原因,初始VC,确实不知道其中奥妙
望知道的兄弟姐妹指点指点……

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
2
OpenThread 包含头文件windows.h就能用
DbgPrint是DDK中的函数,必须是内核模式下的程序才可以调用
2010-11-1 21:58
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
下面我是的VC++6.0中windows.h全文,确实搜索不到OpenThread

/*++ BUILD Version: 0001    Increment this if a change has global effects

Copyright (c) 1985-1997, Microsoft Corporation

Module Name:

    windows.h

Abstract:

    Master include file for Windows applications.

--*/

#ifndef _WINDOWS_
#define _WINDOWS_

#ifndef WINVER
#define WINVER 0x0400
#else       
#if defined(_WIN32_WINNT) && (WINVER < 0x0400) && (_WIN32_WINNT > 0x0400)
#error WINVER setting conflicts with _WIN32_WINNT setting
#endif
#endif

#if(WINVER >= 0x0500)
#pragma message ("")
#pragma message ("NOTE: WINVER has been defined as 0x0500 or greater which enables")
#pragma message ("Windows NT 5.0 and Windows 98 features. When these headers were released,")
#pragma message ("Windows NT 5.0 beta 1 and Windows 98 beta 2.1 were the current versions.")
#pragma message ("")
#pragma message ("For this release when WINVER is defined as 0x0500 or greater, you can only")
#pragma message ("build beta or test applications.  To build a retail application,")
#pragma message ("set WINVER to 0x0400 or visit http://www.microsoft.com/msdn/sdk")
#pragma message ("to see if retail Windows NT 5.0 or Windows 98 headers are available.")
#pragma message ("")
#pragma message ("See the SDK release notes for more information.")
#pragma message ("")
#endif

#ifndef _INC_WINDOWS
#define _INC_WINDOWS

#if defined (_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/*  If defined, the following flags inhibit definition
*     of the indicated items.
*
*  NOGDICAPMASKS     - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
*  NOVIRTUALKEYCODES - VK_*
*  NOWINMESSAGES     - WM_*, EM_*, LB_*, CB_*
*  NOWINSTYLES       - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
*  NOSYSMETRICS      - SM_*
*  NOMENUS           - MF_*
*  NOICONS           - IDI_*
*  NOKEYSTATES       - MK_*
*  NOSYSCOMMANDS     - SC_*
*  NORASTEROPS       - Binary and Tertiary raster ops
*  NOSHOWWINDOW      - SW_*
*  OEMRESOURCE       - OEM Resource values
*  NOATOM            - Atom Manager routines
*  NOCLIPBOARD       - Clipboard routines
*  NOCOLOR           - Screen colors
*  NOCTLMGR          - Control and Dialog routines
*  NODRAWTEXT        - DrawText() and DT_*
*  NOGDI             - All GDI defines and routines
*  NOKERNEL          - All KERNEL defines and routines
*  NOUSER            - All USER defines and routines
*  NONLS             - All NLS defines and routines
*  NOMB              - MB_* and MessageBox()
*  NOMEMMGR          - GMEM_*, LMEM_*, GHND, LHND, associated routines
*  NOMETAFILE        - typedef METAFILEPICT
*  NOMINMAX          - Macros min(a,b) and max(a,b)
*  NOMSG             - typedef MSG and associated routines
*  NOOPENFILE        - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
*  NOSCROLL          - SB_* and scrolling routines
*  NOSERVICE         - All Service Controller routines, SERVICE_ equates, etc.
*  NOSOUND           - Sound driver routines
*  NOTEXTMETRIC      - typedef TEXTMETRIC and associated routines
*  NOWH              - SetWindowsHook and WH_*
*  NOWINOFFSETS      - GWL_*, GCL_*, associated routines
*  NOCOMM            - COMM driver routines
*  NOKANJI           - Kanji support stuff.
*  NOHELP            - Help engine interface.
*  NOPROFILER        - Profiler interface.
*  NODEFERWINDOWPOS  - DeferWindowPos routines
*  NOMCX             - Modem Configuration Extensions
*/

#if defined(RC_INVOKED) && !defined(NOWINRES)

#include <winresrc.h>

#else

#if defined(RC_INVOKED)
/* Turn off a bunch of stuff to ensure that RC files compile OK. */
#define NOATOM
#define NOGDI
#define NOGDICAPMASKS
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NORASTEROPS
#define NOSCROLL
#define NOSOUND
#define NOSYSMETRICS
#define NOTEXTMETRIC
#define NOWH
#define NOCOMM
#define NOKANJI
#define NOCRYPT
#define NOMCX
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_MIPS_) && !defined(_X86_) && defined(_M_IX86)
#define _X86_
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_MRX000)
#define _MIPS_
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_ALPHA)
#define _ALPHA_
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_PPC)
#define _PPC_
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_M68K)
#define _68K_
#endif

#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_MPPC)
#define _MPPC_
#endif

#ifndef _MAC
#if defined(_68K_) || defined(_MPPC_)
#define _MAC
#endif
#endif

#ifndef RC_INVOKED
#if     ( _MSC_VER >= 800 )
#pragma warning(disable:4001)
#pragma warning(disable:4201)
#pragma warning(disable:4214)
#pragma warning(disable:4514)
#endif
#include <excpt.h>
#include <stdarg.h>
#endif /* RC_INVOKED */

#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winuser.h>
#ifdef _MAC
DECLARE_HANDLE(HKEY);
typedef HKEY *PHKEY;
#endif
#if !defined(_MAC) || defined(_WIN32NLS)
#include <winnls.h>
#endif
#ifndef _MAC
#include <wincon.h>
#include <winver.h>
#endif
#if !defined(_MAC) || defined(_WIN32REG)
#include <winreg.h>
#endif
#ifndef _MAC
#include <winnetwk.h>
#endif

#ifndef WIN32_LEAN_AND_MEAN
#include <cderr.h>
#include <dde.h>
#include <ddeml.h>
#include <dlgs.h>
#ifndef _MAC
#include <lzexpand.h>
#include <mmsystem.h>
#include <nb30.h>
#include <rpc.h>
#endif
#include <shellapi.h>
#ifndef _MAC
#include <winperf.h>

#if(_WIN32_WINNT >= 0x0400)
#include <winsock2.h>
#include <mswsock.h>
#else
#include <winsock.h>
#endif /* _WIN32_WINNT >=  0x0400 */

#endif
#ifndef NOCRYPT
#include <wincrypt.h>
#endif

#ifndef NOGDI
#include <commdlg.h>
#ifndef _MAC
#include <winspool.h>
#ifdef INC_OLE1
#include <ole.h>
#else
#include <ole2.h>
#endif /* !INC_OLE1 */
#endif /* !MAC */
#endif /* !NOGDI */
#endif /* WIN32_LEAN_AND_MEAN */

#ifdef _MAC
#include <winwlm.h>
#endif

#ifdef INC_OLE2
#include <ole2.h>
#endif /* INC_OLE2 */

#ifndef _MAC
#ifndef NOSERVICE
#include <winsvc.h>
#endif

#if(WINVER >= 0x0400)
#ifndef NOMCX         
#include <mcx.h>      
#endif /* NOMCX */      
                  
#ifndef NOIME           
#include <imm.h>        
#endif
#endif /* WINVER >= 0x0400 */
#endif

#ifndef RC_INVOKED
#if     ( _MSC_VER >= 800 )
#pragma warning(default:4001)
#pragma warning(default:4201)
#pragma warning(default:4214)
/* Leave 4514 disabled.  It's a stupid warning anyway. */
#endif
#endif /* RC_INVOKED */

#endif /* RC_INVOKED */

#endif /* _INC_WINDOWS */
#endif /* _WINDOWS_ */
2010-11-1 22:10
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我用windows XP自带的搜索功能,搜索过我整个计算机中所有.h文件,都没有发现OpenThread的定义
难道,我的VC6有问题???
2010-11-1 22:13
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
5
确实是,才发现这个函数,不过MSDN里有定义,OpenThread是在Windows 2000以上的系统中才有的函数,所以在VC++ 6.0下本身是没有这个函数的定义,网上有很多方法,LZ可以百度查下
2010-11-1 22:14
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
换句话说,只能用更高版本的VC了……
2010-11-1 22:27
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
估计替换掉vc6的lib文件就可以增加这个函数
2010-11-1 22:59
0
雪    币: 1577
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
上面几楼那个不是说了opentread只能在2K下么。。第一,MSDN大多都会提供给你非内核性的函数的实例和使用的,例如ntdll等的就不会找到,但是总该能在MSDN找到吧。。

第二,不管怎么样,2K和XP或者其他什么的系统,一般能在这个系统找到的函数都能在其他的发行版本里面使用到。。对WINS的不太熟悉,但是,LINUX下的一定会有提供给你其他的函数的。。
2010-11-1 23:35
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
VC6的包含文件有些老了  可以下一个比较新的platform sdk 网上有地址 以后编程方便 如果只是临时想用 就声明一下  用GetProcAddress动态调用就行了
2010-11-1 23:45
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
typedef HANDLE (__stdcall *OPENTHREAD) (DWORD dwFlag, BOOL bUnknow, DWORD dwThreadId);  
HMODULE hDll =::LoadLibrary("Kernel32.dll");  
OPENTHREAD OpenThread = (OPENTHREAD)::GetProcAddress(hDll, "OpenThread");  
HANDLE hThread = OpenThread(...);
2010-11-2 10:02
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
查看MSDN:
Client: Requires Windows XP, Windows 2000 Professional, or Windows Me.
Server :Requires Windows Server 2003 or Windows 2000 Server.
Header: Declared in Winbase.h; include Windows.h.

Library: Link to Kernel32.lib.

DLL :Requires Kernel32.dll.
DbgPrint必须在Wdk中
2010-11-2 10:02
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
MSDN中就有啊

Remarks
The handle returned by OpenThread can be used in any function that requires a handle to a thread, such as the wait functions, provided you requested the appropriate access rights. The handle is granted access to the thread object only to the extent it was specified in the dwDesiredAccess parameter.

When you are finished with the handle, be sure to close it by using the CloseHandle function.

Requirements
  Windows NT/2000/XP: Included in Windows 2000 and later.
  Windows 95/98/Me: Included in Windows Me.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.
2010-11-2 10:44
0
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
OpenThread如果是VC6.0你要装新版的SDK才可以用
或者是楼上的方法也可以.
DbgPrint的话是DDK(WDK)里面的函数,如果你想在VC6用的话可以试下OutputDebugString
2010-11-2 12:04
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
14
下载一个VC6增强包
2010-11-2 12:14
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
直接用cntrump的VC6绿化包
2010-11-2 18:45
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我以前装中文版的是
后来改装英文版的就ok了
2010-11-2 18:59
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢各位,已经解决了
下载新的SDK是最可靠的办法
其次,自已声明,求地址也不错
2010-11-2 19:36
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我以前也出现类似问题,安装完整企业版就可以了,估计你是VC精简版的
2010-11-7 11:56
0
游客
登录 | 注册 方可回帖
返回
//