컴퓨터 지식 네트워크 - 컴퓨터 백과사전 - 소프트웨어를 통해 노트북의 무선 모듈 스위치를 제어하는 ​​방법

소프트웨어를 통해 노트북의 무선 모듈 스위치를 제어하는 ​​방법

제어판에서 무선 네트워크 카드 비활성화를 제어할 수 있습니다.

bool CNetCardStateSet::NetCardStateChange(void * NetCardPoint, bool Enabled)

{

//------------------------------- -------- ---------------

//기능: NetCardStateChange 활성화 및 네트워크 카드 비활성화

//매개변수: NetCardPoint는 PNetCardStruct의 포인터입니다.

//매개변수: 활성화 true = 활성화 false = 비활성화

//- --------- --------------- --------- --------------

PNetCardStruct NetCard = (PNetCardStruct)NetCardPoint;

DWORD DeviceId = NetCard- >Id;

HDEVINFO hDevInfo = 0;

if (INVALID_HANDLE_VALUE == (hDevInfo =

SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES))) )

{

false를 반환;

}

/*

SetupDiGetClassDevs(

(LPGUID) &GUID_DEVCLASS_NET, // GUID_DEVCLASS_NET은 네트워크 장치만 나열한다는 의미입니다.

NULL,

this->m_hWnd,

DIGCF_PRESENT);

*/

SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};

DWORD 상태, 문제;

if (!SetupDiEnumDeviceInfo(hDevInfo,DeviceId, &DeviceInfoData)) //

false 반환;

if (CM_Get_DevNode_Status(&Status, &Problem,

DeviceInfoData.DevInst,0) != CR_SUCCESS) //읽기 네트워크 카드 상태

return false;

SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)};

PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;

PropChangeParams.Scope = DICS_FLAG_GLOBAL;

if (활성화됨)

{

if (!((Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == 문제 ))) //네트워크 카드가 활성화된 경우 처리되지 않습니다.

{

NetCard->Disabled = false;

return false;

}

PropChangeParams.StateChange = DICS_ENABLE;

}

else

{

if ((Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == 문제))

{

NetCard->Disabled = true;

return false;

p>

}

if (!((Status & DN_DISABLE) && (CM_PROB_HARDWARE_DISABLED != 문제)))

return false;

PropChangeParams. StateChange = DICS_DISABLE;

}

if (!SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData,(SP_CLASSINSTALL_HEADER *)&PropChangeParams, sizeof(PropChangeParams)))

{// 기능: 네트워크 카드를 유효 또는 무효로 설정

return false;

}

if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DeviceInfoData))

{

false 반환 ;

}

if (CM_Get_DevNode_Status(&Status, &Problem,DeviceInfoData.DevInst,0) == CR_SUCCESS)

{

NetCard -> 비활성화됨 = (상태 & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == 문제);

}

true를 반환합니다.

}

2

3

4

5

6

7

8

9

위 함수 매개변수의 구조

typedef struct NetCardStruct

{

DWORD Id; // 네트워크 카드 장치 번호

CString Name; // 네트워크 카드 이름

bool 비활성화 여부; 현재 비활성화됨

bool Changed; // 변경 여부

} TNetCardStruct;

typedef TNetCardStruct* PNetCardStruct;

[code =C/C++]이것은 네트워크 카드를 활성화 및 비활성화하는 코드입니다.

p>

PIP_ADAPTER_INFO pAdapterInfo=NULL

ULONG len;

if(ERROR_SUCCESS!=GetAdaptersInfo(pAdapterInfo,&len))

{

free(pAdapterInfo);

pAdapterInfo=(IP_ADAPTER_INFO *)malloc(len);

}

if(ERROR_SUCCESS==GetAdaptersInfo(pAdapterInfo ,&len))

{

}

DWORD dwSize=0;

MIB_IFTABLE *mit=NULL;

GetIfTable(NULL, &dwSize, true);

mit= (MIB_IFTABLE*)new BYTE[dwSize];

if(NO_ERROR==GetIfTable(mit, &dwSize, true) )

{

for(int i =0; i<(int)mit->dwNumEntries; i++)

{

mit->table[i].dwAdminStatus=MIB_IF_ADMIN_STATUS_DOWN;

CString str(pAdapterInfo->Description);

CString temp(mit->table[i].bDescr);

if (str==temp)

{

if(NO_ERROR==SetIfEntry(&mit->table[i]))

{

/* ShowMessage("어댑터 중지("+IntToStr (mit->table[i].dwIndex)+") "

+(AnsiString)(char*) mit->table[i].bDescr+" 성공.");*/

printf("어댑터 중지 성공!\n");

}

}

// if(NO_ERROR==SetIfEntry(&mit- >table[i]))

// {

///* ShowMessage( "Stop Adapter("+IntToStr(mit->table[i].dwIndex)+" ) "

// +(AnsiString)(char*)mit->table[i].bDescr+" 성공 .");*/

// printf("어댑터 중지 성공했습니다!\n");

// }

}

for(int i=0; i<(int)mit->dwNumEntries; i++ )

{

mit->table[i].dwAdminStatus=MIB_IF_ADMIN_STATUS_UP;

p>

CString str(pAdapterInfo->Description);

CString temp(mit->table[i].bDescr);

if (str==temp)

{

if(NO_ERROR= =SetIfEntry(&mit->table[i]))

{

printf("어댑터 시작이 성공했습니다!\n");

}

}

}

[code]

위 내용 프로그램에 함수를 배치할 수 있습니다.

사실, 위에 게시된 코드는 이전에 컴파일된 네트워크 카드 설정 클래스의 코드 일부인 것이 좋습니다.

上篇: 삼성 노트북 메모리 모델을 읽는 방법을 아는 사람이 있나요? 下篇: 모자건강진단서 시험 응시 방법
관련 내용