검색결과 리스트
글
선작업
Windows SDK 최신으로 깔아주시고 .. 2008 쓰면 자동으로 깔리는데 현제 윈도우7지원까지나옴
DDK 요것도 깔아주시고
해더 라이브러리 걸어주시고 하면되요 ~_~;;
// TestJniFile.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Common.h"
int main(int argc, char* argv[])
{
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD iCnt;
///FILE *fp;
char str_buffer[100];
char * sDiveName = "USB"; // 인자 받은것 포트번호
int iState =1; /// 죽이냐 살리느냐 0 살린다 1 죽인다.
// Create a HDEVINFO with all present devices.
hDevInfo = SetupDiGetClassDevs( NULL,
0, // Enumerator
0,
DIGCF_PRESENT | DIGCF_ALLCLASSES ); // 디바이스 정보를 가저오는곳입니다.. DIGCF_PRESENT | DIGCF_ALLCLASSES 이부분인자를 바꺼줌으로써.. 가져울 정보의 갯수를
바꿀수있다 그래픽만 , 아님 이너넷만 머 이런식인듯... 인터넷 찾아보면 길이보임 .. 난 잘모름 .. 나하하 ~
if (hDevInfo == INVALID_HANDLE_VALUE)
{
return 1;
}
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (iCnt=0;SetupDiEnumDeviceInfo(hDevInfo,iCnt,&DeviceInfoData);iCnt++) /// 갯수 가지고 포문 을 돌린다 한갯식 정보를 가져와야지/
{
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
int i=SPDRP_DEVICEDESC;
while (!SetupDiGetDeviceRegistryProperty( // 디바이스의 각종 정보를 가져온다.
hDevInfo,
&DeviceInfoData,
SPDRP_FRIENDLYNAME, // 디바이스 정보가저오는것을 여기서 변경할수있다 아이디 또는 머 기타 부수적인것 변경해줌으로써 내용이 바뀐다.
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize)
)
{
if (GetLastError() ==ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
if (buffer) LocalFree(buffer);
// Double the size to avoid problems on
// W2k MBCS systems per KB 888609.
buffer = (LPTSTR)LocalAlloc(LPTR,buffersize * 2);
}
else
{
// Insert error handling here.
break;
}
}
printf("장치명 :[ %s ] \n",buffer);
/// LGE CDMA USB Serial Port(COM7)
sprintf_s(str_buffer,"%s\n",buffer);
if(strstr(str_buffer,sDiveName))
{
if (iState == 0)
{
if (DiviceStateChange(DICS_ENABLE, iCnt , hDevInfo)){
printf("Divice Name :[ %s ] Divice Num -> %d 을 사용으로 변경완료. \n",buffer,iCnt);
}
else
{
printf("Divice Name :[ %s ] Divice Num -> %d 을 사용으로 변경하려 했지만 실패 하였습니다.. \n",buffer,iCnt);
}
}
else
{
if (DiviceStateChange(DICS_DISABLE, iCnt , hDevInfo) )
{
printf("Divice Name :[ %s ] Divice Num-> %d 을 사용 않함으로 변경완료. \n",buffer,iCnt);
}
else
{
printf("Divice Name :[ %s ] Divice Num -> %d 을 사용 않함으로 변경하려 했지만 실패 하였습니다.. \n",buffer,iCnt);
}
}
getchar();
return 0;
}
};
getchar();
if ( GetLastError()!=NO_ERROR &&
GetLastError()!=ERROR_NO_MORE_ITEMS )
{
return 1;
}
SetupDiDestroyDeviceInfoList(hDevInfo);
return 1;
}
BOOL DiviceStateChange(DWORD NewState, DWORD SelectedItem,HDEVINFO hDevInfo)
{
SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)};
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
// HCURSOR hCursor;
//
// This may take a while :^(
//
// hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
//
// Get a handle to the Selected Item.
//
if (!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))
{
DisplayError(TEXT("EnumDeviceInfo"));
return FALSE;
}
//
// Set the PropChangeParams structure.
//
PropChangeParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
PropChangeParams.Scope = DICS_FLAG_GLOBAL;
PropChangeParams.StateChange = NewState;
PropChangeParams.HwProfile = 0;
if (!SetupDiSetClassInstallParams(hDevInfo,
&DeviceInfoData,
(SP_CLASSINSTALL_HEADER *)&PropChangeParams,
sizeof(PropChangeParams)))
{
DisplayError(TEXT("SetClassInstallParams"));
return FALSE;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,
hDevInfo,
&DeviceInfoData))
{
return TRUE;
}
return TRUE;
}
RECENT COMMENT