Ask how to disable NIC, Win2KWin98

xiaoxiao2021-03-06  50

// Hardware.cpp: Implementation of Chardware #include "stdafx.h" #include "netca_hardware.h" #include "hardware.h" #define unknownDevice text ("")

/ // CHARDWARE

/ *************************************************************************************************************** **

Parameter Description: driverid [in] - The unique identifier of the device in the registry PVAL [OUT, RETVAL] - Return value, success is 0, failed to create: 2002-6-21

*********************************************************** ******** / STDMETHODIMP Chardware :: Disable (BSTR Driverid, long * pval) {bool showhidden = 0; hdevinfo hdevinfo = 0; long list = -1; len = wcstombs NULL, DRIVERID, WCSLEN (DRIVERID)); len = len 1; drvid = (char *) malloc (len); MEMSET (DRVID, 0, LEN 1); WCSTombs (DriverId, WCSLEN (DRIVERID);

IF (Invalid_Handle_Value == (HDEVINFO = SetupdiGetClassdevs (NULL, NULL, NULL, DIGCF_PRESENT | Digcf_allClasses))) {

* pval = -1; return s_ok;} // Get the index of drv in the set enumadddevices (showhidden, hdevinfo);

// disable the DRV // IF ((IsDisableable (TINDEX, HDEVINFO) && (! (TINDEX == - 1))) IF (isDisabled (TINDEX, HDEVINFO) IF (Isdisableable (Tindex, HDevinfo)) IF ( STATECHANGE (DICS_DISABLE, TINDEX, HDEVINFO) * pVAL = 0; ELSE * pVAL = -1; Else * pval = 1; ELSE * pVAL = 0;

IF (HDEVINFO) setupdideDeDeviceInfolist (hdevinfo); returnif;

Bool Chardware :: ENUMADDDEVICES (Bool Showhidden, Hdevinfo Hdevinfo) {DWORD I, STATUS, PROBLEM

LPTSTR IONAME = NULL; DWORD LEN = 0; sp_devinfo_data deviceinfodata = {sizeof (sp_devinfo_data)};

// // enumerate though all the devices. // for (i = 0; SetupdienumDeviceInfo (HDevinfo, I, & DeviceInfodata); i ) {////////10 OR MOVE ONTO THE NEXT One. // IF (! CR_SUCCESS = CM_Get_DevNode_Status (& Status, & Problem, DeviceInfoData.DevInst, 0)) {continue;} if ((ShowHidden || ((Status & DN_NO_SHOW_IN_DM) || IsClassHidden (& DeviceInfoData.ClassGuid)))!!) continue;

// // Get a friendly name for the device. // ConstructDeviceName (Hdevinfo, & DeviceInFodata, & Ioname, (Pulong) & len; if (Strcmp (Ioname, DRVID) == 0) {TINDEX = I; Return True;}} Return True;} BOOL CHARDWARE :: ISCLASSHIDEN (GUID * ClassGuid) {bool bhidden = false; hkey hkeyclass;

// // If the devices class has the NoDisplayClass value then // do not display this device. // if (hKeyClass = SetupDiOpenClassRegKey (ClassGuid, KEY_READ)) {bHidden = (RegQueryValueEx (hKeyClass, REGSTR_VAL_NODISPLAYCLASS, NULL, NULL, NULL NULL) == Error_Success; regclosekey (HKEYCLASS);

Return bhidden;

BOOL CHardware :: ConstructDeviceName (HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PVOID Buffer, PULONG Length) {if (! GetRegistryProperty (DeviceInfoSet, DeviceInfoData, SPDRP_DRIVER, Buffer, Length)) {if (! GetRegistryProperty (DeviceInfoSet, DeviceInfoData, SPDRP_DEVICEDESC, Buffer, Length )) {if (! GetRegistryProperty (DeviceInfoSet, DeviceInfoData, SPDRP_CLASS, Buffer, Length)) {if (! GetRegistryProperty (DeviceInfoSet, DeviceInfoData, SPDRP_CLASSGUID, Buffer, Length)) {* Length = (_tcslen (UnknownDevice) 1) * sizeof (Tchar); buffer = (char *) malloc (* length); _TCSCPY (* (lptstr *) Buffer, unknowndevice); }}}

Return True;}

BOOL CHardware :: GetRegistryProperty (HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length) {while (! SetupDiGetDeviceRegistryProperty (DeviceInfoSet, DeviceInfoData, Property, NULL, (BYTE *) * (TCHAR **) Buffer, * Length, Length)) {

IF (getLastError () == Error_INSUFFICIENT_Buffer {/// We need to change the buffer size. // if (* (lptstr *) buffer LocalFree (* (lptstr *) buffer; * (lptstr *) buffer = (PCHAR) LocalAlloc (LPTR, * Length);} else {// // Unknown Failure // return FALSE;.}} return (* (LPTSTR *) Buffer) [0];

}

BOOL CHardware :: StateChange (DWORD NewState, DWORD SelectedItem, HDEVINFO hDevInfo) {SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof (SP_CLASSINSTALL_HEADER)}; SP_DEVINFO_DATA DeviceInfoData = {sizeof (SP_DEVINFO_DATA)}; // // Get a handle to the Selected Item //. IF (! SetupdienumDeviceInfo (HDevinfo, SELECTEDITEM, & DeviceInfodata) {

Return false;}

// // Set the PropChangeParams structure // PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;. PropChangeParams.Scope = DICS_FLAG_GLOBAL; PropChangeParams.StateChange = NewState;

IF (! SETUPDisetClassInstallparams (HDEvinfo, & DeviceInFodata, (sp_classinstall_header *) & propchangeParams, SIZEOF (PropChangeParams))) {

Return false;}

/// Call the classinstaller and perform the change. //Iff (! Setupdicallclassinstaller (Dif_PropertyChange, HDevinfo, & deviceInfodata) {

Return True;}

Return True;}

Bool Chardware :: Isdisabled (DWORD SELECTEM, HDEVINFO HDEVINFO) {sp_devinfo_data deviceinfodata = {sizeof (sp_devinfo_data)}; DWORD status, proBLEM;

// // Get a Handle to the selected item. // if (! SetUpdienumDeviceInfo (HDEVINFO, SELECTEDITEM, & DeviceInfodata) {Return False;}

IF (cr_success! = cm_get_devnode_status (& status, & quhip, deviceinfodata.devinst, 0)) {

Return false;}

RETURN (STATUS & DN_HAS_PROBLEM) && (cm_prob_disabled == qu);}

Bool Chardware :: Isdisableable (DWORD SELECTEDITEM, HDEVINFO HDEVINFO) {sp_devinfo_data deficinfodata = {sizeof (sp_devinfo_data)}; DWORD Status, Problem;

// // Get a Handle to the selected item. // if (! SetUpdienumDeviceInfo (HDEVINFO, SELECTEDITEM, & DeviceInfodata) {

Return false;}

IF (cr_success! = cm_get_devnode_status (& status, & quhip, deviceinfodata.devinst, 0)) {

Return false;}

RETURN ((Status & DN_DISABLEABLE && (cm_prob_hardware_disabled! = qu));

STDMETHODIMP CHardware :: Enable (BSTR DriverID, long * pVal) {BOOL ShowHidden = 0; HDEVINFO hDevInfo = 0; long len; // init the value TIndex = -1; len = wcstombs (NULL, DriverID, wcslen (DriverID)) Leen = len 1; drvid = (char *) Malloc (len); MEMSET (DRVID, 0, LEN 1); WCSTombs (DriverId, WCSLEN (DRIVERID);

IF (Invalid_Handle_Value == (HDEVINFO = SetupdiGetClassdevs (NULL, NULL, NULL, DIGCF_PRESENT | Digcf_allClasses))) {

* pval = -1; return s_ok;} // Get the index of drv in the set enumadddevices (showhidden, hdevinfo);

转载请注明原文地址:https://www.9cbs.com/read-81078.html

New Post(0)