Собственно почему одна и та же функция в разных местах кода выводит разные строки?(тело отметил линиями)
Код:
;{Константы setupapi.h
; Коды свойств реестра устройств
; (Коды, помеченные как доступные только для чтения (R), могут использоваться только для
; SetupDiGetDeviceRegistryProperty)
;
; Эти значения должны охватывать один и тот же набор свойств реестра
; как определено кодами CM_DRP в cfgmgr32.h.
;
; Обратите внимание, что коды SPDRP отсчитываются от нуля, а коды CM_DRP отсчитываются от единицы!
#SPDRP_DEVICEDESC = $00000000;DeviceDesc (R/W)
#SPDRP_HARDWAREID = $00000001;HardwareID (R/W)
#SPDRP_COMPATIBLEIDS = $00000002;CompatibleIDs (R/W)
#SPDRP_UNUSED0 = $00000003;unused
#SPDRP_SERVICE = $00000004;Service (R/W)
#SPDRP_UNUSED1 = $00000005;unused
#SPDRP_UNUSED2 = $00000006;unused
#SPDRP_CLASS = $00000007;Class (R--tied To ClassGUID)
#SPDRP_CLASSGUID = $00000008;ClassGUID (R/W)
#SPDRP_DRIVER = $00000009;Driver (R/W)
#SPDRP_CONFIGFLAGS = $0000000A;ConfigFlags (R/W)
#SPDRP_MFG = $0000000B;Mfg (R/W)
#SPDRP_FRIENDLYNAME = $0000000C;FriendlyName (R/W)
#SPDRP_LOCATION_INFORMATION = $0000000D;LocationInformation (R/W)
#SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = $0000000E;PhysicalDeviceObjectName (R)
#SPDRP_CAPABILITIES = $0000000F;Capabilities (R)
#SPDRP_UI_NUMBER = $00000010;UiNumber (R)
#SPDRP_UPPERFILTERS = $00000011;UpperFilters (R/W)
#SPDRP_LOWERFILTERS = $00000012;LowerFilters (R/W)
#SPDRP_BUSTYPEGUID = $00000013;BusTypeGUID (R)
#SPDRP_LEGACYBUSTYPE = $00000014;LegacyBusType (R)
#SPDRP_BUSNUMBER = $00000015;BusNumber (R)
#SPDRP_ENUMERATOR_NAME = $00000016;Enumerator Name (R)
#SPDRP_SECURITY = $00000017;Security (R/W, binary form)
#SPDRP_SECURITY_SDS = $00000018;Security (W, SDS form)
#SPDRP_DEVTYPE = $00000019;Device Type (R/W)
#SPDRP_EXCLUSIVE = $0000001A;Device is exclusive-access (R/W)
#SPDRP_CHARACTERISTICS = $0000001B;Device Characteristics (R/W)
#SPDRP_ADDRESS = $0000001C;Device Address (R)
#SPDRP_UI_NUMBER_DESC_FORMAT = $0000001D;UiNumberDescFormat (R/W)
#SPDRP_DEVICE_POWER_DATA = $0000001E;Device Power Data (R)
#SPDRP_REMOVAL_POLICY = $0000001F;Removal Policy (R)
#SPDRP_REMOVAL_POLICY_HW_DEFAULT = $00000020;Hardware Removal Policy (R)
#SPDRP_REMOVAL_POLICY_OVERRIDE = $00000021;Removal Policy Override (RW)
#SPDRP_INSTALL_STATE = $00000022;Device Install State (R)
#SPDRP_LOCATION_PATHS = $00000023;Device Location Paths (R)
#SPDRP_BASE_CONTAINERID = $00000024;Base ContainerID (R)
#SPDRP_MAXIMUM_PROPERTY = $00000025;Upper bound on ordinals
;}
;{;Структуры
Structure _GUID
Data1.l;
Data2.u;
Data3.u;
Data4.a[8];
EndStructure
;
Structure _SP_DEVINFO_DATA
cbSize.l;Размер в байтах структуры SP_DEVINFO_DATA
ClassGuid._GUID;GUID класса установки устройства
DevInst.l;Непрозрачный дескриптор экземпляра устройства (также известный как дескриптор devnode).
;Некоторые функции, такие как функции SetupDiXxx, принимают всю структуру SP_DEVINFO_DATA в качестве входных данных для идентификации
;устройства в наборе информации об устройстве. Другие функции, такие как функции CM_Xxx, такие как CM_Get_DevNode_Status, принимают этот
;дескриптор DevInst в качестве входных данных.
*Reserved;
EndStructure
Structure _DEVPROPKEY; представляющию ключ свойства устройства в унифицированной модели свойств устройства
fmtid._GUID;DEVPROPGUID
pid.u;DEVPROPID(идентификатора свойства,Идентификатор свойства должен быть больше или равен двум)
EndStructure
;};
ProcedureDLL.i Diologovoe_Okno_Config_Ustroistv()
;{;Форма
If OpenWindow(#PB_Any, 0, 0,500, 500, "Конфигурация устройств", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Protected PanelGadget1.i=PanelGadget(#PB_Any,0,0,500,500)
AddGadgetItem(PanelGadget1, -1, "Все Устройства системы");1-я панель
Protected TreeGadget1.i=TreeGadget(#PB_Any,0,0,492,400)
Protected Handle = SetupDiGetClassDevs_(#Null,#Null,#Null,#DIGCF_ALLCLASSES)
Protected DeviceInfoData._SP_DEVINFO_DATA
;ZeroMemory(@DeviceInfoData, SizeOf(SP_DEVINFO_DATA));
DeviceInfoData\cbSize = SizeOf(_SP_DEVINFO_DATA);
DeviceIndex = 0;
Protected *BUFF=AllocateMemory(10000)
Protected kolihestvo_bait.l
AddGadgetItem(TreeGadget1, -1, "Класс установки устройства", 0, 0)
While SetupDiEnumDeviceInfo_(Handle,DeviceIndex,@DeviceInfoData)<>0;
DeviceIndex+1
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_CLASS,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,PeekS(*BUFF,-1,#PB_Unicode), 0, 1)
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_CLASSGUID,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,"GUID класса "+PeekS(*BUFF,-1,#PB_Unicode), 0, 2)
;===========
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_FRIENDLYNAME,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,"Понятное имя устройства "+PeekS(*BUFF,-1,#PB_Unicode), 0, 3)
;===========
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_DEVICEDESC,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,"Описание устройства "+PeekS(*BUFF,-1,#PB_Unicode), 0, 3)
;==================
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_FRIENDLYNAME,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,"Понятное имя устройства "+PeekS(*BUFF,-1,#PB_Unicode), 0, 3)
;=================
SetupDiGetDeviceRegistryProperty_(Handle,@DeviceInfoData,#SPDRP_MFG,0,*BUFF,10000,0)
AddGadgetItem(TreeGadget1, -1,"Имя производителя устройства. "+PeekS(*BUFF,-1,#PB_Unicode) , 0, 3)
Wend
FreeMemory(*BUFF)
EndIf
;}
;{;Обработчик сообщений
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow;{;
End
;};
;Case #PB_Event_Gadget
; Select EventGadget()
;EndSelect
EndSelect
ForEver;};
EndProcedure
;пример приминения
Diologovoe_Okno_Config_Ustroistv()
Отредактировано Sergeihik (10.09.2022 16:35:08)