Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кто может подкмнуть описание ф-ции SetupDiChangeState?


yuger ©   (2002-02-11 10:24:00) 

Я где-то нарыл описание на С++:

WINSETUPAPI BOOL WINAPI
SetupDiChangeState(
IN HDEVINFO DeviceInfoSet,
IN OUT PSP_DEVINFO_DATA DeviceInfoData
);
К сожалению не смог найти описание
HDEVINFO и OUT PSP_DEVINFO_DATA

Еще нашел:

Как, например, сетевую карту "отключить в данной конфигурации" через Win32 API?
Мой компьютеp->Свойства->Устpойства->NetCard->Отключено в данной конфигypации можно сделать программно:
Если в Win95 DiChangeState(lpdi, DICS_DISABLE, DICS_FLAG_CONFIGSPECIFIC); - только yчтите, что setupx.dll 16-битовая
Если в 98 или nt SetupDiChangeState


Может кто знает как с ней работать в Delphi.
Ее описание на Delphi.

Эта функция включает/отключает устройство из конфигурации.


VuDZ   (2002-02-14 13:00:00) [1]


(C)Галина

void DisableLPT(TECP *ECP)
{
SP_DEVINFO_DATA DevInfoData;
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
SP_PROPCHANGE_PARAMS DevChngParams;
DevChngParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
DevChngParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
DevChngParams.StateChange = DICS_DISABLE;
DevChngParams.Scope = DICS_FLAG_GLOBAL;
DevChngParams.HwProfile = 0;
//char PropertyBuffer[5000];

GUID ClassGuid = {0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18};
//GUID ClassGuid = {0x78A1C341, 0x4539, 0x11D3, 0xB8, 0x8D, 0x00, 0xC0, 0x4F, 0xAD, 0x56, 0x71};
bool t;

DevInfo = SetupDiGetClassDevs(
&ClassGuid,
NULL,
NULL,
0
);
t = INVALID_HANDLE_VALUE!=DevInfo;

wchar_t WideCharStr[1000];
MultiByteToWideChar(
CP_ACP,
NULL,
ECP->DeviceName,
-1,
WideCharStr,
1000
);

t = SetupDiOpenDeviceInfo(
DevInfo,
ECP->DeviceName,
NULL,
0,
&DevInfoData
);
//DWORD RequiredSize = sizeof(DevChngParams);
t = SetupDiSetClassInstallParams(
DevInfo,
&DevInfoData,
(PSP_CLASSINSTALL_HEADER)&DevChngParams,
sizeof(DevChngParams)
);
// GetError();

t = SetupDiCallClassInstaller(
DIF_PROPERTYCHANGE,
DevInfo,
&DevInfoData
);

}


VuDZ   (2002-02-12 14:57:00) [2]

я с этим никогда не работал но есть такие мысли, сюдя по полям:
HDEVINFO = указатель на открытый каким-либо образом девайс

DWORD cbSize = размер структуры
GUID ClassGuid = GUID девайса - брать из реестра или другими методами
DWORD DevInst = бес понятия
ULONG_PTR Reserved = указатель на 32х переменную. т.к. reserved, я обычно в таких случаях пишу NULL, т.е. nil на паскале.

Попробуй поискать с инете, где-то да должны быть описания


yuger   (2002-02-12 09:53:00) [3]

Спасибо за информацию.
Меня это интересует в контексте
вкл/откл устройства.
В каких полях и какие значения надо для включения и выключения
выставлять?
Заранее спасибо.


VuDZ   (2002-02-11 11:10:00) [4]

//
// Define type for reference to device information set
//
typedef PVOID HDEVINFO;


т.е. HDEVINFO - прсто указатель на что угодно

//
// Device information structure (references a device instance
// that is a member of a device information set)
//
typedef struct _SP_DEVINFO_DATA {
DWORD cbSize;
GUID ClassGuid;
DWORD DevInst; // DEVINST handle
ULONG_PTR Reserved;
} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;


PSP_DEVINFO_DATA - указатель на структуру _SP_DEVINFO_DATA


Наверх

Титульная страница Поиск, карта сайта Написать письмо