检测网络中的服务器状态,如果那台服务器的硬盘坏了或者被拔出能马上知道并告知一个设定的主机!
解决方案 »
- CTreeView::OnRButtonDown(nFlags, point);什么作用?
- 关于函数地址
- 拿到一个工程,怎样判断它是基于哪种类型的?
- 关于将图片通过AV或VGA信号传送的问题
- 如何用XML来保存和导入画好的图?请大家提供思路
- 为什么不能把已经装载了图象数据的内存区域付给另一个内存区域??
- 问一个为ADO的_Connection**变量赋值的问题?
- shilong 看进来2
- 关于操作注册表 RegSaveKey RegLoadKey
- 从菜单项以命令响应的形式弹出的对话框可以做成停靠框吗?
- 求救,使用CBlockingSocket一接收数据,程序就出错!
- vc导出的makefile文件是做什么用的,如何使用?
#include <objbase.h>
#include <comdef.h>
#include <wbemidl.h># pragma comment(lib, "wbemuuid.lib")void PrintBiosUuid();void main(void)
{
PrintBiosUuid();
return;
};void PrintBiosUuid()
{
BOOL bRet = FALSE;
HRESULT hr = S_OK;
BSTR bstrNamespace = L"root\\cimv2";
BSTR bstrQuery = L"SELECT * FROM Win32_DiskDrive";
VARIANT vVal;
ULONG uEnumRet = 0;
IWbemLocator *pWbemLocator= NULL;
IWbemServices *pServices= NULL;
IEnumWbemClassObject *pEnum= NULL;
IWbemClassObject *pObj= NULL;hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoInitializeSecurity(NULL, -1, NULL, NULL,
RPC_C_AUTHN_LEVEL_CONNECT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL, EOAC_NONE, 0);
if (FAILED(hr))
{
CoUninitialize();
#ifdef _DEBUG
printf("Failed to initialize security. "); printf("Error code = [0x%8X]\n", hr);
#endif
goto EXIT;
}hr = CoCreateInstance(CLSID_WbemLocator, NULL,
CLSCTX_INPROC_SERVER, IID_IWbemLocator,
(void**) &pWbemLocator);
if( FAILED(hr) )
{
#ifdef _DEBUG
printf("CoCreateInstance failed. "); printf("Error code = [0x%8X]\n", hr);
#endif
goto EXIT;
}hr = pWbemLocator->ConnectServer(bstrNamespace, NULL, NULL, NULL,
0, NULL, NULL, &pServices);
if(FAILED(hr))
{
#ifdef _DEBUG
printf("pWbemLocator->ConnectServer failed. "); printf("Error code = [0x%8X]\n", hr);
#endif
goto EXIT;
}pWbemLocator->Release();
pWbemLocator = NULL;#ifdef _DEBUG
printf("Successfully connected to namespace [%S]\n", bstrNamespace);
#endifhr = pServices->ExecQuery(L"WQL", bstrQuery, 0, NULL, &pEnum);if(FAILED(hr))
{
#ifdef _DEBUG
printf("IWbemServices::ExecQuery failed. "); printf("Error code = [0x%X]\n", hr);
#endif
goto EXIT;
}hr = pEnum->Reset();
hr = pEnum->Next(WBEM_INFINITE, 1, &pObj, &uEnumRet);
LPWSTR wsz[2] = {L"InterfaceType",L"PNPDeviceID"};
while(S_OK == hr)
{
for (int i=0; i<2; i++)
{
//ZeroMemory(&vVal,sizeof(VARIANT));
hr = pObj->Get(wsz[i], 0, &vVal, NULL, NULL);
if (vVal.bstrVal && hr == S_OK)
{
wprintf(L"%s is: [%s]\n",wsz[i], vVal.bstrVal);
}
}
printf("\n");
hr = pEnum->Next(WBEM_INFINITE, 1, &pObj, &uEnumRet);
}if(FAILED(hr))
{
#ifdef _DEBUG
printf("IEnumWbemClassObject::Next failed. "); printf("Error code = [0x%8X]\n", hr);
#endif
goto EXIT;
}EXIT:
if(pObj)
pObj->Release();if(pEnum)
pEnum->Release();if(pServices)
pServices->Release();if(pWbemLocator)
pWbemLocator->Release();CoUninitialize();
}
判断接口类型为scsi,然后看看PNPdeviceID是否存在,如果不存在就是拔除。才给50分,太吝啬了点把,给200分!
也可以调用 fdisk 然后分析他的结果。