新建的空Win32 Application项目文件,然后添加了如下两个文件至项目中,main.h中的各种预定义都是从一个名为Setupapi.h的头文件中切出来的.main.cpp只有一个WinMain函数,在该函数中调用了一个DiChangeState函数.请各位大虾帮忙.// main.cpp
#include <windows.h>
#include "main.h"int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
LPDEVICE_INFO lpid; lpid=(LPDEVICE_INFO)malloc(sizeof(DEVICE_INFO));
DiChangeState(lpid,DICS_DISABLE,DICS_FLAG_GLOBAL,0);
return 0;
}
// main.h
#pragma comment(lib,"setupapi.lib")
#pragma comment(lib,"setupext.lib")
#pragma comment(lib,"rasapi32.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"sampusd.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"smmhook.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"spoolss.lib")
#pragma comment(lib,"sti.lib")
#pragma comment(lib,"stream.lib")
#pragma comment(lib,"uniime.lib")
#pragma comment(lib,"usbcamd.lib")
#pragma comment(lib,"usbd.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"version.lib")
#pragma comment(lib,"vkd.lib")
#pragma comment(lib,"vpacket.lib")
// #pragma comment(lib,"vxdwraps.lib")
#pragma comment(lib,"wdm.lib")
// #pragma comment(lib,"wdmvxd.lib")
#pragma comment(lib,"wingb.lib")
#pragma comment(lib,"winmm.lib")
// 一些类型预定义
typedef unsigned int UINT;
typedef UINT RETERR;
typedef UINT LOGDISKID;
typedef DWORD LPEXPANDVTBL;// 一些常数预定义
#define LINE_LEN 80
#define MAX_DEVNODE_ID_LEN 256
#define MAX_CLASS_NAME_LEN 32
#define MAX_GUID_STR 50// DiChangeState函数要用的常数
#define DICS_FLAG_GLOBAL 0x00000001
#define DICS_DISABLE 0x00000002// GENCALLBACKINFO_S结构
typedef struct _GENCALLBACKINFO_S { /* gen-callback struc */
WORD cbSize; // Size of this structure (bytes).
WORD wOperation; // Operation being performed.
LOGDISKID ldidSrc; // Logical Disk ID for Source.
LPCSTR pszSrcSubDir; // Source sub-dir off of the LDID.
LPCSTR pszSrcFileName; // Source file name (base name).
LOGDISKID ldidDst; // Logical Disk ID for Dest.
LPCSTR pszDstSubDir; // Dest. sub-dir off of the LDID.
LPCSTR pszDstFileName; // Dest. file name (base name).
LPEXPANDVTBL lpExpandVtbl; // BUGBUG needed? NULL right now!
WORD wflags; // flags for VcpQueueCopy.
LPARAM lParam; // LPARAM to the Vcp API.
} GENCALLBACKINFO_S, FAR *LPGENCALLBACKINFO;// GENCALLBACKPROC预定义
typedef LRESULT (CALLBACK *GENCALLBACKPROC)(LPGENCALLBACKINFO lpGenInfo,LPARAM lparamRef);// DRIVER_NODE结构
typedef struct _DRIVER_NODE {
struct _DRIVER_NODE FAR* lpNextDN;
UINT Rank;
UINT InfType;
unsigned InfDate;
LPSTR lpszDescription; // Compatibility: Contains the Device Desc.
LPSTR lpszSectionName;
ATOM atInfFileName;
ATOM atMfgName;
ATOM atProviderName;
DWORD Flags;
DWORD dwPrivateData;
LPSTR lpszDrvDescription; // New contains an driver description
LPSTR lpszHardwareID;
LPSTR lpszCompatIDs;
unsigned DriverDate;
LPSTR lpszInfPath;
LPARAM lpReserved;
} DRIVER_NODE, NEAR* PDRIVER_NODE, FAR* LPDRIVER_NODE, FAR* FAR* LPLPDRIVER_NODE;// DRIVER_INFO结构
typedef struct _DRIVER_INFO
{
WORD cbSize; // Size of this structure in bytes
struct _DRIVER_INFO FAR* lpNextInfo;
LPSTR lpszDescription;
LPSTR lpszMfgName;
LPSTR lpszProviderName; // ONLY valid if DI_MULTMFGS is set in the LPDI
WORD Rank;
DWORD dwFlags;
LPARAM lpReserved;
DWORD dwPrivateData;
WORD wDate; // Driver Date
LPSTR lpszVersion;
} DRIVER_INFO, *PDRIVER_INFO, FAR *LPDRIVER_INFO;// DEVICE_INFO结构
typedef struct _DEVICE_INFO
{
UINT cbSize;
struct _DEVICE_INFO FAR *lpNextDi;
char szDescription[LINE_LEN];
DWORD dnDevnode;
HKEY hRegKey;
char szRegSubkey[MAX_DEVNODE_ID_LEN];
char szClassName[MAX_CLASS_NAME_LEN];
DWORD Flags;
HWND hwndParent;
LPDRIVER_NODE lpCompatDrvList;
LPDRIVER_NODE lpClassDrvList;
LPDRIVER_NODE lpSelectedDriver;
ATOM atDriverPath;
ATOM atTempInfFile;
HINSTANCE hinstClassInstaller;
HINSTANCE hinstClassPropProvidor;
HINSTANCE hinstDevicePropProvidor;
HINSTANCE hinstBasicPropProvidor;
FARPROC fpClassInstaller;
FARPROC fpClassEnumPropPages;
FARPROC fpDeviceEnumPropPages;
FARPROC fpEnumBasicProperties;
DWORD dwSetupReserved;
DWORD dwClassInstallReserved;
GENCALLBACKPROC gicpGenInstallCallBack; LPARAM gicplParam;
UINT InfType; HINSTANCE hinstPrivateProblemHandler;
FARPROC fpPrivateProblemHandler;
LPARAM lpClassInstallParams;
struct _DEVICE_INFO FAR *lpdiChildList;
DWORD dwFlagsEx;
LPDRIVER_INFO lpCompatDrvInfoList;
LPDRIVER_INFO lpClassDrvInfoList;
char szClassGUID[MAX_GUID_STR];
} DEVICE_INFO, FAR * LPDEVICE_INFO, FAR * FAR * LPLPDEVICE_INFO;RETERR WINAPI DiChangeState(LPDEVICE_INFO lpdi, DWORD dwStateChange, DWORD dwFlags, LPARAM lParam);在VC集成环境中按F7后提示:
Linking...
main.obj : error LNK2001: unresolved external symbol "unsigned int __stdcall DiChangeState(struct _DEVICE_INFO *,unsigned long,unsigned long,long)" (?DiChangeState@@YGIPAU_DEVICE_INFO@@KKJ@Z)
Debug/DisableD.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...DisableD.exe - 2 error(s), 0 warning(s)
#include <windows.h>
#include "main.h"int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
LPDEVICE_INFO lpid; lpid=(LPDEVICE_INFO)malloc(sizeof(DEVICE_INFO));
DiChangeState(lpid,DICS_DISABLE,DICS_FLAG_GLOBAL,0);
return 0;
}
// main.h
#pragma comment(lib,"setupapi.lib")
#pragma comment(lib,"setupext.lib")
#pragma comment(lib,"rasapi32.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"sampusd.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"smmhook.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"spoolss.lib")
#pragma comment(lib,"sti.lib")
#pragma comment(lib,"stream.lib")
#pragma comment(lib,"uniime.lib")
#pragma comment(lib,"usbcamd.lib")
#pragma comment(lib,"usbd.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"version.lib")
#pragma comment(lib,"vkd.lib")
#pragma comment(lib,"vpacket.lib")
// #pragma comment(lib,"vxdwraps.lib")
#pragma comment(lib,"wdm.lib")
// #pragma comment(lib,"wdmvxd.lib")
#pragma comment(lib,"wingb.lib")
#pragma comment(lib,"winmm.lib")
// 一些类型预定义
typedef unsigned int UINT;
typedef UINT RETERR;
typedef UINT LOGDISKID;
typedef DWORD LPEXPANDVTBL;// 一些常数预定义
#define LINE_LEN 80
#define MAX_DEVNODE_ID_LEN 256
#define MAX_CLASS_NAME_LEN 32
#define MAX_GUID_STR 50// DiChangeState函数要用的常数
#define DICS_FLAG_GLOBAL 0x00000001
#define DICS_DISABLE 0x00000002// GENCALLBACKINFO_S结构
typedef struct _GENCALLBACKINFO_S { /* gen-callback struc */
WORD cbSize; // Size of this structure (bytes).
WORD wOperation; // Operation being performed.
LOGDISKID ldidSrc; // Logical Disk ID for Source.
LPCSTR pszSrcSubDir; // Source sub-dir off of the LDID.
LPCSTR pszSrcFileName; // Source file name (base name).
LOGDISKID ldidDst; // Logical Disk ID for Dest.
LPCSTR pszDstSubDir; // Dest. sub-dir off of the LDID.
LPCSTR pszDstFileName; // Dest. file name (base name).
LPEXPANDVTBL lpExpandVtbl; // BUGBUG needed? NULL right now!
WORD wflags; // flags for VcpQueueCopy.
LPARAM lParam; // LPARAM to the Vcp API.
} GENCALLBACKINFO_S, FAR *LPGENCALLBACKINFO;// GENCALLBACKPROC预定义
typedef LRESULT (CALLBACK *GENCALLBACKPROC)(LPGENCALLBACKINFO lpGenInfo,LPARAM lparamRef);// DRIVER_NODE结构
typedef struct _DRIVER_NODE {
struct _DRIVER_NODE FAR* lpNextDN;
UINT Rank;
UINT InfType;
unsigned InfDate;
LPSTR lpszDescription; // Compatibility: Contains the Device Desc.
LPSTR lpszSectionName;
ATOM atInfFileName;
ATOM atMfgName;
ATOM atProviderName;
DWORD Flags;
DWORD dwPrivateData;
LPSTR lpszDrvDescription; // New contains an driver description
LPSTR lpszHardwareID;
LPSTR lpszCompatIDs;
unsigned DriverDate;
LPSTR lpszInfPath;
LPARAM lpReserved;
} DRIVER_NODE, NEAR* PDRIVER_NODE, FAR* LPDRIVER_NODE, FAR* FAR* LPLPDRIVER_NODE;// DRIVER_INFO结构
typedef struct _DRIVER_INFO
{
WORD cbSize; // Size of this structure in bytes
struct _DRIVER_INFO FAR* lpNextInfo;
LPSTR lpszDescription;
LPSTR lpszMfgName;
LPSTR lpszProviderName; // ONLY valid if DI_MULTMFGS is set in the LPDI
WORD Rank;
DWORD dwFlags;
LPARAM lpReserved;
DWORD dwPrivateData;
WORD wDate; // Driver Date
LPSTR lpszVersion;
} DRIVER_INFO, *PDRIVER_INFO, FAR *LPDRIVER_INFO;// DEVICE_INFO结构
typedef struct _DEVICE_INFO
{
UINT cbSize;
struct _DEVICE_INFO FAR *lpNextDi;
char szDescription[LINE_LEN];
DWORD dnDevnode;
HKEY hRegKey;
char szRegSubkey[MAX_DEVNODE_ID_LEN];
char szClassName[MAX_CLASS_NAME_LEN];
DWORD Flags;
HWND hwndParent;
LPDRIVER_NODE lpCompatDrvList;
LPDRIVER_NODE lpClassDrvList;
LPDRIVER_NODE lpSelectedDriver;
ATOM atDriverPath;
ATOM atTempInfFile;
HINSTANCE hinstClassInstaller;
HINSTANCE hinstClassPropProvidor;
HINSTANCE hinstDevicePropProvidor;
HINSTANCE hinstBasicPropProvidor;
FARPROC fpClassInstaller;
FARPROC fpClassEnumPropPages;
FARPROC fpDeviceEnumPropPages;
FARPROC fpEnumBasicProperties;
DWORD dwSetupReserved;
DWORD dwClassInstallReserved;
GENCALLBACKPROC gicpGenInstallCallBack; LPARAM gicplParam;
UINT InfType; HINSTANCE hinstPrivateProblemHandler;
FARPROC fpPrivateProblemHandler;
LPARAM lpClassInstallParams;
struct _DEVICE_INFO FAR *lpdiChildList;
DWORD dwFlagsEx;
LPDRIVER_INFO lpCompatDrvInfoList;
LPDRIVER_INFO lpClassDrvInfoList;
char szClassGUID[MAX_GUID_STR];
} DEVICE_INFO, FAR * LPDEVICE_INFO, FAR * FAR * LPLPDEVICE_INFO;RETERR WINAPI DiChangeState(LPDEVICE_INFO lpdi, DWORD dwStateChange, DWORD dwFlags, LPARAM lParam);在VC集成环境中按F7后提示:
Linking...
main.obj : error LNK2001: unresolved external symbol "unsigned int __stdcall DiChangeState(struct _DEVICE_INFO *,unsigned long,unsigned long,long)" (?DiChangeState@@YGIPAU_DEVICE_INFO@@KKJ@Z)
Debug/DisableD.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...DisableD.exe - 2 error(s), 0 warning(s)
解决方案 »
- 关于MFC对access 的操作
- 哪里有开发GIS的MapX可编程控件下载??望各位伸手襄助!
- 200问题!较难!CPropertySheetEx的问题!
- windows api WritePrinter()在哪个系统dll中?
- 请问List View中,鼠标双击如何弹出对话框?
- 惭愧啊!这么简单的数据库问题我都不会,你会吗?
- 请教关于 WM_NCMOUSELEAVE 和 TrackMouseEvent 消息的问题
- !!!ADO Oracle 连接SOSSOS
- 送分啦——————!怎么在鼠标移动到toolsbar上的每个按钮时现实hint提示??
- SDI中不能用串口控件吗?
- 高分求OCR接口
- ATL数据类型转换的问题
project->setting->link
add your ???.lib
大家没看到如下代码声明了所需要的*.lib文件吗?也就是说我已经引入了所需的*.lib.
#pragma comment(lib,"setupapi.lib")
#pragma comment(lib,"setupext.lib")
#pragma comment(lib,"rasapi32.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"sampusd.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"smmhook.lib")
#pragma comment(lib,"sampcpl.lib")
#pragma comment(lib,"spoolss.lib")
#pragma comment(lib,"sti.lib")
#pragma comment(lib,"stream.lib")
#pragma comment(lib,"uniime.lib")
#pragma comment(lib,"usbcamd.lib")
#pragma comment(lib,"usbd.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"version.lib")
#pragma comment(lib,"vkd.lib")
#pragma comment(lib,"vpacket.lib")
// #pragma comment(lib,"vxdwraps.lib")
#pragma comment(lib,"wdm.lib")
// #pragma comment(lib,"wdmvxd.lib")
#pragma comment(lib,"wingb.lib")
#pragma comment(lib,"winmm.lib")