Windows setup api что это такое



Рекомендации по использованию SetupAPI

Ниже приведены рекомендации по использованию общих функций установки (Setupxxx) и функций установки устройств (сетупдиxxx), предоставляемых Setupapi.

Не следует считать, что содержимое файла установки свободно без ошибок или что указанный файл установки не был изменен вредоносным путем. Поэтому всегда проверяйте всю информацию, полученную от функций SetupAPI. Убедитесь, что строки имеют допустимую длину, что буферы имеют допустимый размер, а значения индекса находятся в допустимом диапазоне.

при написании устанавливаемых приложений для установки на компьютерах под управлением Microsoft Windows XP и более поздних версий можно вызвать сетупверифинффиле (описанную в документации по Windows SDK), которая проверяет, не был ли изменен файл INF с цифровой подписью.

Всегда проверяйте возвращаемое значение каждой функции SetupAPI. Если функция завершается ошибкой, код должен вызвать GetLastError , чтобы получить код ошибки, определяющий сбой. Возвращенные коды ошибок можно определить в файле Winerror. h или Setupapi. h. Перед вызовом FormatMessage с FORMAT_MESSAGE_FROM_SYSTEM для создания текстового отображения всегда используйте макрос HRESULT_FROM_SETUPAPI (определенный в файле Winerror. h), чтобы преобразовать возвращаемое значение в значение HRESULT. Если функция SetupAPI возвращается успешно, код не должен вызывать GetLastError. (функции GetLastError и FormatMessage , а также коды системных ошибок, описаны в документации Windows SDK.)

Если функция SetupAPI возвращает маркер, код должен проверять возвращаемое значение INVALID_HANDLE_VALUE. Такие функции не возвращают значение NULL.

Обратите внимание на следующее различие между функциями сетупдиxxx и Setupxxx , которые позволяют вызывающему объекту запрашивать требуемый размер буфера:

Если вызывающий объект функции сетупдиxxx делает такой запрос, GetLastError всегда возвращает ERROR_INSUFFICIENT_BUFFER.

Если вызывающий объект функции Setupxxx делает такой запрос, функция GetLastError возвращает NO_ERROR, если длина буфера не была указана, или ERROR_INSUFFICIENT_BUFFER, если был указан слишком маленький буфер.

Источник

Windows API

Windows API (англ. application programming interfaces ) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной бесплатной операционной системы ReactOS. Является самым прямым способом взаимодействия приложений с Windows и ReactOS. Для создания программ, использующих Windows API, «Майкрософт» выпускает комплект разработчика программного обеспечения, который называется Platform SDK, и содержит документацию, набор библиотек, утилит и других инструментальных средств для разработки.

Содержание

Общие сведения

Windows API был изначально спроектирован для использования в программах, написанных на языке Си или C++. Работа через Windows API — это наиболее близкий к системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.

Версии

  • Win16 — первая версия Windows API для 16-разрядных версий Windows. Изначально назывался просто Windows API, затем стал называться Win16 для отличия от Win32.
  • Win32s — подмножество Win32, устанавливаемое на семейство 16-разрядных систем Windows 3.x, и реализующее ограниченный набор функций Win32 API для этих систем.
  • Win32 — 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в динамически подключаемых библиотеках kernel32.dll и advapi32.dll ; базовые модули графического интерфейса пользователя — в user32.dll и gdi32.dll . Win32 появился вместе с Windows NT и затем был перенесён в несколько ограниченном виде в системы серии Windows 9x. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUI обеспечивают два модуля: csrss.exe (процесс исполнения клиент-сервер), работающий в пользовательском режиме, и win32k.sys в режиме ядра. Работу же системных Win32 API обеспечивает ядро — ntoskrnl.exe .
  • Win64 — 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах. Win64 API можно найти только в 64-разрядных версиях Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 и Windows 8.

Технологии, доступные через Windows API

Алфавитный список технологий, доступных через Windows API:

  • Система контроля и управления доступом.
  • Microsoft Active Accessibility.
  • Active Directory.
  • Active Server Pages.
  • ActiveX.
  • Автоматизация.
  • Фоновая интеллектуальная служба передачи (BITS).
  • Bluetooth.
  • CDO.
  • Certificate Enrollment Control.
  • Certificate Services.
  • Collaboration Data Objects.
  • Component Object Model
  • COM Plus.
  • Common Controls.
  • Криптография.
  • Debugging and Error Handling.
  • Device I/O.
  • Распределённая файловая система.
  • DLL, процессы и многопоточность.
  • Domain Name System.
  • Dynamic Host Configuration Protocol (DHCP).
  • Extensible Authentication Protocol (EAP).
  • Extensible Markup Language (XML) и парсер MSXML.
  • Fax Service.
  • Групповая политика.
  • HTTP.
  • ICS и ICF.
  • Image Color Management (ICM)
  • Image Mastering API (IMAPI)
  • Indexing Service
  • Infrared Data Association (IrDa)
  • Internet Authentication Service (IAS)
  • Internet Connection Sharing and Firewall (ICSF)
  • Internet Explorer
  • Internet Information Services (IIS)
  • Internet Protocol Helper (IP Helper)
  • Interprocess Communications
  • Lightweight Directory Access Protocol (LDAP)
  • LSA Authentication
  • LSA Policy
  • Memory Management
  • Message Queuing (MSMQ)
  • Messaging Application Programming Interface (MAPI)
  • Microsoft .NET Passport
  • Microsoft Agent
  • Microsoft Data Access Components (MDAC)
  • Microsoft Interface Definition Language (MIDL)
  • Microsoft Management Console (MMC)
  • Microsoft Transaction Server (MTS)
  • Multicast Address Dynamic Client Allocation Protocol (MADCAP)
  • Multicast Group Manager
  • National Language Support
  • NetMeeting
  • NetShell
  • Network Load Balancing Provider
  • Network Management
  • Network Monitor
  • Network Provider API
  • OLE DB
  • OLE DB Provider for Internet Publishing
  • OnNow
  • Open Database Connectivity (ODBC)
  • OpenGL
  • Password Filters
  • PC Health
  • Performance Monitoring
  • Plug and Play и Universal Plug and Play
  • Power Management
  • Quality of Service (QoS)
  • Real-time Communications (RTC) Client //ссылка ведет не на ту статью
  • Remote Access Service (RAS)
  • Remote Procedure Call (имеется в виду служба RPC Service)
  • Removable Storage Manager (RSM)
  • Routing and Remote Access Service (RRAS)
  • Routing Table Manager Version 1 (RTMV1)
  • Routing Table Manager Version 2 (RTMV2)
  • Security Support Provider Interface (SSPI)
  • Server Cluster API
  • Server Data Objects (SDO)
  • Service Security Attachments
  • Setup API
  • Shell (имеется в виду Explorer Shell)
  • Side-by-side Assemblies
  • Simple Network Management Protocol (SNMP)
  • Smart Card
  • Still Image
  • Storage и Structured Storage
  • Synchronization Manager
  • System.DirectoryServices
  • System Event Notification Service (SENS)
  • System Restore
  • Tablet PC
  • Task Scheduler
  • Telephony Application Programming Interface (TAPI) 2.2
  • Telephony Application Programming Interface (TAPI) 3
  • Telephony Service Provider Interface (TSPI и MSPI)
  • Terminal Services
  • Text Services Framework
  • Unicode (и MSLU)
  • Universal Description, Discovery, and Integration (UDDI)
  • Video for Windows
  • Windows Clustering
  • Windows File Protection
  • Windows GDI
  • Windows GDI+
  • Windows Image Acquisition (WIA)
  • Windows Installer
  • Windows Management Instrumentation (WMI)
  • Windows Multimedia
  • Windows Sockets
  • Windows System Information
  • Windows User Interface
  • Winlogon и Gina
  • WinSNMP

См. также

  • DirectX
  • Microsoft .NET
  • Wine — свободная кроссплатформенная реализация Windows API.
  • Window class
  • svchost.exe
  • WinMain

Ссылки

Литература

  • Гэри Неббет Справочник по базовым функциям API Windows NT/2000 = Windows NT/2000 Native API Reference. — М .: «Вильямс», 2002. — С. 528. — ISBN 1-57870-199-6
Программные интерфейсы и фреймворкиMicrosoft Windows
Графика Проводник Windows • DirectX • Direct3D • GDI • Windows Presentation Foundation • Windows Color System • Windows Image Acquisition • Windows Imaging Component
Звук DirectSound • DirectMusic • XACT • Speech API • MME
Мультимедиа DirectShow • Windows Media • Media Foundation
Веб MSHTML • MSXML • Платформа RSS для Windows • JScript • ActiveX • XMLHttpRequest • Гаджеты
Доступ к данным Компоненты Microsoft Data Access • Extensible Storage Engine • ADO.NET • Sync Framework • Jet-механизм
Сети Winsock (LSP) • Filtering Platform • NDIS • Windows Rally • Сервис фоновой интеллектуальой передачи данных • P2P API
Коммуникации TAPI
Администрирование Консоль Win32 • Windows Script Host • Инструментарий управления Windows • PowerShell • Планировщик задач • Offline Files • Теневое копирование • Windows Installer • Диспетчер ошибок Windows • Журнал событий Windows
Модель компонентов COM • COM+ • DCOM • .NET Framework
Библиотеки Microsoft Foundation Classes (MFC) • Active Template Library (ATL) • Windows Template Library (WTL) • Base Class Library (BCL)
Разработка драйверов Windows Driver Model • Windows Driver Foundation (KMDF • UMDF)
Безопасность CryptoAPI (CAPICOM) • Windows CardSpace • Data protection API • Security Support Provider Interface
.NET .NET Framework • ASP.NET • ADO.NET • .NET Remoting • Windows Presentation Foundation • Windows Workflow Foundation • Windows Communication Foundation • Windows CardSpace • XNA Framework • Silverlight • Библиотека параллельного программирования
Межпроцессное
взаимодействие
Dynamic Data Exchange (DDE) • MSRPC • Именованные каналы
Текст и
поддержка языков
Framework Текстовых сервисов • Объектная модель текстов • Редактор метода ввода • Языковые пакеты • Многоязычный интерфейс
Игры XNA Framework • DirectX
Инструменты разработки элементов графического интерфейса
Низко-
уровневые

Macintosh Toolbox/Carbon • Windows API • Intrinsics • Intuition • Xlib

BOOPSI • Magic User Interface • Zune • ReAction GUI

Источник

Windows setup api что это за процесс + видео обзор

Проверить файл setupapi.dll

Описание setupapi.dll

setupapi.dll

. был замечен в директориях

. вот такого размера

Версия Размер в байтах
6.4.9879.0 1717536 (100.00%)
6.4.9841.0 1712784 (50.00%) 1860032 (50.00%)
6.3.9600.16384 1766896 (25.00%) 1767440 (18.75%) 1767448 (6.25%) 1782912 (18.75%) 1929608 (12.50%) 1934296 (12.50%) 1950280 (6.25%)
6.3.9431.0 1772512 (66.67%) 1935232 (33.33%)
6.2.9200.16496 1752064 (100.00%)
6.2.9200.16384 1752064 (66.67%) 1885696 (11.11%) 1886208 (22.22%)
6.2.8400.0 1752064 (66.67%) 1899008 (33.33%)
6.2.8250.0 1742336 (100.00%)
6.2.8102.0 1742336 (66.67%) 1885696 (33.33%)
6.1.7601.17514 1667584 (100.00%)
6.1.7600.16385 1659392 (3.03%) 1665536 (6.06%) 1667584 (45.45%) 1668096 (6.06%) 1668608 (18.18%) 1899520 (6.06%) 1900544 (9.09%) 1901056 (3.03%) 3493888 (3.03%)
6.1.7264.0 1667584 (50.00%) 1668608 (50.00%)
6.1.7100.0 1667584 (100.00%)
6.1.7077.0 1667584 (100.00%)
6.0.6001.18000 1590272 (33.33%) 1591296 (66.67%)
6.0.6000.16609 1585664 (100.00%)
6.0.6000.16386 1584128 (100.00%)
5.2.3790.4511 1069056 (100.00%)
5.2.3790.3959 1069568 (40.00%) 1076736 (20.00%) 1524224 (20.00%) 1530880 (20.00%)
5.1.2600.5603 985088 (4.55%) 991744 (9.09%) 1320960 (4.55%) 1422336 (9.09%) 1497088 (9.09%) 1854464 (4.55%) 1869312 (4.55%) 1881088 (9.09%) 1917952 (4.55%) 3100672 (9.09%) 3736576 (4.55%) 3780096 (4.55%) 5433344 (9.09%) 6381056 (13.64%)
5.1.2600.5512 950784 (1.43%) 985088 (1.43%) 991744 (5.71%) 997888 (1.43%) 1113088 (2.86%) 1235456 (1.43%) 1238528 (1.43%) 1268736 (1.43%) 1362944 (1.43%) 1399808 (1.43%) 1422336 (4.29%) 1427968 (1.43%) 1497088 (4.29%) 2315264 (4.29%) 2566144 (4.29%) 2711040 (1.43%) 3718656 (1.43%) 3720704 (4.29%) 3736576 (4.29%) 3780096 (2.86%) 3782144 (4.29%) 3810304 (1.43%) 3896320 (2.86%) 3963904 (4.29%) 4273152 (2.86%) 4300288 (4.29%) 4398592 (1.43%) 4452352 (2.86%) 4473856 (1.43%) 4506112 (4.29%) 4543488 (2.86%) 5102592 (1.43%) 5433344 (4.29%) 5463552 (4.29%) 6381056 (4.29%)
5.1.2600.5503 991744 (100.00%)
5.1.2600.2938 991744 (100.00%)
5.1.2600.2180 983552 (9.09%) 990208 (27.27%) 1361408 (9.09%) 1408512 (9.09%) 1495552 (27.27%) 1573376 (9.09%) 6379520 (9.09%)
5.1.2600.1106 793600 (100.00%)
10.0.9926.0 1721080 (100.00%)
10.0.19041.1 4433848 (100.00%)
10.0.18362.1 4518336 (100.00%)
10.0.17763.404 4527624 (100.00%)
10.0.17763.1 4526280 (100.00%)
10.0.17134.590 4403720 (100.00%)
10.0.17134.1 4403720 (100.00%)
10.0.16299.15 4382032 (50.00%) 4537040 (50.00%)
10.0.15063.0 4330920 (50.00%) 4462120 (50.00%)
10.0.14393.0 4268368 (50.00%) 4387168 (50.00%)
10.0.14251.1000 4382480 (100.00%)
10.0.10586.0 4268360 (50.00%) 4387680 (50.00%)
10.0.10240.16384 1733880 (75.00%) 1860944 (25.00%)
10.0.10130.0 1726264 (100.00%)
10.0.10122.0 1720632 (100.00%)
10.0.10074.0 1727832 (100.00%)
10.0.10041.0 1715768 (100.00%)
пусто (66.67%) 1900544 (33.33%)

. и таким копирайтом

Что такое AdminService.exe? Это безопасно или вирус? Как удалить или исправить это

Что такое AdminService.exe?

AdminService.exe это исполняемый файл, который является частью Bluetooth Win7 Suite Программа, разработанная Atheros Communications, Программное обеспечение обычно о 14.95 MB по размеру.

AdminService.exe безопасно, или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, такой процесс, как AdminService.exe, должен запускаться из C: \ Program Files \ Bluetooth Suite \ AdminService.exe, а не где-либо еще.

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Наиболее важные факты о AdminService.exe:

Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, прежде чем удалять AdminService.exe. Для этого найдите этот процесс в диспетчере задач.

Найдите его местоположение (оно должно быть в C: \ Program Files \ Bluetooth Suite \) и сравните его размер с приведенными выше фактами.

Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус AdminService.exe, необходимо Загрузите и установите приложение полной безопасности, например Malwarebytes., Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

Могу ли я удалить или удалить AdminService.exe?

Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.

Распространенные сообщения об ошибках в AdminService.exe

Наиболее распространенные ошибки AdminService.exe, которые могут возникнуть:

• «Ошибка приложения AdminService.exe».
• «Ошибка AdminService.exe».
• «AdminService.exe столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства».
• «AdminService.exe не является допустимым приложением Win32».
• «AdminService.exe не запущен».
• «AdminService.exe не найден».
• «Не удается найти AdminService.exe».
• «Ошибка запуска программы: AdminService.exe».
• «Неверный путь к приложению: AdminService.exe».

Как исправить AdminService.exe

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

Чтобы помочь вам проанализировать процесс AdminService.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

Обновлено апреля 2021 года:

Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:

Загрузите или переустановите AdminService.exe

Вход в музей Мадам Тюссо не рекомендуется загружать заменяемые exe-файлы с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить AdminService.exe, мы рекомендуем переустановить основное приложение, связанное с ним. Bluetooth Win7 Suite.

Информация об операционной системе

Ошибки AdminService.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

Что такое Windows API

Интерфейс прикладного программирования WindowsAPI (applicationprogramminginterface) является интерфейсом системного программирования в пользовательском режиме для семейства операционных систем Windows. До выхода 64-разрядных версий Windows программный интерфейс для 32-разрядных версий операционных систем Windows назывался Win32 API, чтобы его можно было отличить от исходной 16-разрядной версии Windows API (которая служила интерфейсом программирования для начальных 16-разрядных версий Windows).

Windows API состоит из нескольких тысяч вызываемых функций, которые разбиты на следующие основные категории:

Описание WindowsAPI можно найти в документации по набору инструментальных средств разработки программного обеспечения — WindowsSoftwareDevelopmentKit (SDK). Эта документация доступна на веб-сайте www.msdn.microsoft.com. Она также включена со всеми уровнями подписки в сеть MicrosoftDeveloperNetwork (MSDN), предназначенную для разработчиков.

Службы, функции и стандартные программы.

Некоторые термины в пользовательской и программной документации Windows в разных контекстах имеют разные значения. Например, слово служба может относиться к вызываемой в операционной системе стандартной подпрограмме, драйверу устройства или к обслуживающему процессу. Что именно означают те или иные термины, показано в следующем списке:

История Win32 API.

Интересно, что Win32 не планировался в качестве исходного интерфейса программирования для той системы, которая в ту пору называлась Windows NT. Поскольку проект Windows NT запускался в качестве замены для OS/2 версии 2, первоначальным интерфейсом программирования был 32-разрядный OS/2 PresentationManagerAPI. Но через год после запуска проекта произошел взлет поступившей в продажу Microsoft Windows 3.0. В результате этого Microsoft сменила направление и сделала Windows NT будущей заменой семейства продуктов Windows, а не заменой OS/2. В связи с этим и возникла необходимость выработать спецификацию Windows API — до этого, в Windows 3.0, API существовал только в виде 16-разрядного интерфейса.

Хотя в Windows API намечалось введение множества новых функций, недоступных в Windows 3.1, Microsoft решила сделать новый API, по возможности, максимально совместимым по именам, семантике и используемым типам данных с 16-разрядным Windows API, чтобы облегчить бремя переноса существующих 16-разрядных Windows-приложений в Windows NT. Этим, собственно, и объясняется тот факт, что многие имена функций и интерфейсов могут показаться непоследовательными: так нужно было для обеспечения совместимости нового Windows API со старым 16-разрядным Windows API.

Windows setup api что это

Windows API (англ. application programming interfaces ) — общее наименование набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт». Предоставляет прямой способ взаимодействия приложений пользователя с операционной системой Windows. Для создания программ, использующих Windows API, корпорация «Майкрософт» выпускает комплект разработчика программного обеспечения, который называется Platform SDK и содержит документацию, набор библиотек, утилит и других инструментальных средств для разработки.

Содержание

Общие сведения [ править | править код ]

Windows API спроектирован для использования в языке Си для написания прикладных программ, предназначенных для работы под управлением операционной системы MS Windows. Работа через Windows API — это наиболее близкий к операционной системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.

Windows API представляет собой множество функций, структур данных и числовых констант, следующих соглашениям языка Си. В то же время конвенция вызова функций отличается от cdecl, принятой для языка C: Windows API использует stdcall (winapi). Все языки программирования, способные вызывать такие функции и оперировать такими типами данных в программах, исполняемых в среде Windows, могут пользоваться этим API. В частности, это языки C++, Pascal, Visual Basic и многие другие.

Для облегчения переноса на другие платформы программ, написанных с опорой на Windows API, сделана библиотека Wine.

Персональные инструменты

Содержание

Общие сведения

Работа через Windows API — это наиболее близкий к операционной системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.

Windows API представляет собой множество функций, структур данных и числовых констант, следующих соглашениям языка Си. Все языки программирования, способные вызывать такие функции и оперировать такими типами данных в программах, исполняемых в среде Windows, могут пользоваться этим API. В частности, это языки C++, Pascal, Visual Basic и многие другие. Эти функции в свою очередь могут быть разбиты на следующие основные категории:

История Microsoft API

Microsoft прилагает усилия, чтобы сохранить обратную совместимость. Для достижения этой цели при разработке новых версий Windows, Microsoft иногда реализует обходные пути, чтобы обеспечить совместимость с программным обеспечением сторонних производителей, которые использовали предыдущую версию незарегистрированным или даже нецелесообразным способом.

Обзор

Функции, предоставляемые Windows API, могут быть представлены следующим образом:

Взаимодействие программ

Версии Windows API

Почти каждая новая версия Microsoft Windows представила свои собственные дополнения и изменения в Windows API.

Мультимедиа

Microsoft также предоставляет несколько интерфейсов API для кодирования медиа и воспроизведения:

Со вчерашнего дня, господа, можно написать вот такой скрипт:

и, запустив его в Windows, получить желаемый результат — диалоговое окно Windows.

Это стало возможным потому, что модуль (обёртку вокруг той необыкновенно полезной библиотеки которая используется для вызова библиотек на языке Си не менее чем других языках) вчера портировали на Windows.

Следует, разумеется, помнить о том, что в Windows API используются строки в формате а джаваскриптовые строки Node.js хранит Воплощением этой разницы является в моём примере преобразователь аналог одноимённого макро, описанного

Ясное дело, что на Windows API свет клином не сошёлся: модуль можно использовать для вызова какой угодно библиотеки, написанной на языке Си или соблюдающей принятый в Си способ вызова функций (например, в Си++ это достигается директивою

Что означает этот шаг эволюции возможностей Node.js?

Напомню предсказание, сделанное мною меньше месяца назад — шестнадцатого декабря 2011 года:

Следует ожидать мощного синергического толчка в тот момент, когда код модулей для Node.js начнут сочинять также и те разработчики на JavaScript, у которых на рабочем компьютере стоит Windows. По моим оценкам, для этого не достаточно портировать на Windows один только сам движок Node.js; потребуется также, по меньшей мере, вот что:

И месяца не прошло, как второй из этих трёх пунктов реализовался. Любая библиотека может быть оскриптована джаваскриптами. Соответственно, приложениям на Node.js под Windows стала доступна вся мощь системных API, а кросс-платформенные приложения могут невозбранно обращаться ко кросс-платформенным библиотекам, таская их с собою.

Первый из этих трёх пунктов (касавшийся как раз таскания библиотек с собою) не реализовался в том виде, в каком я мечтал о нём: пакетный менеджер npm всё ещё не обеспечивает возможность доставки только того скомпилированного кода, который нужен конкретной системе. Но у меня появился новый повод для оптимизма после того, как я увидел, что разработчикам модуля удалось обойти нехватку такой возможности. Их модуль содержит один и тот же код, скомпилированный под полдесятка различных платформ:
а скрипт lib/bindings.js во время вызова модуля оглядывается, соображая, куда же попал он, и подбирает нужный двоичный код:

Как видно, работает ничуть не хуже; папка «compiled» вот только занимает ≈700 килобайтов, но при нынешних объёмах дисков и скоростях сетей об этом можно позабыть.

Статья SetupAPI – информация об устройствах

Перед любым системным программистом, рано или поздно встаёт задача определения текущего оборудования системы. Причин для этого может быть много, например: установить драйвер на девайс, собрать лог всех устройств для последующей работы с ними и т.п. Если мы не будем готовы к таким поворотам судьбы, то придётся переобуваться в воздухе (на скорую руку штудируя доки), в результате чего на выходе получим как-минимум кривой софт.

Да. в штатной поставке Windows имеется оснастка WMI Control – Windows Management Instrumentation (инструментарий управления Win), которая прекрасно решает проблемы данного характера. Однако вызывать сторонние сервисы и приложения из своих программ слишком накладно по времени, и наше приложение будет жутко тормозить. Личные опыты показали, что одну и ту-же задачу WMI решает аж в 60 раз медленнее, чем если этот-же функционал реализовать прямым вызовом системных функций WinAPI – аргумент явно не в пользу WMI, хотя данная оснастка и требует от нас меньших телодвижений.

Основное назначение библиотеки setupapi.dll – это установка драйверов устройств и законченная их регистрация в системном реестре. Данная библиотека состоит из двух самостоятельных модулей:

Не зная тонкостей функционирования драйверов (а их в системе вагон и маленькая тележка, и каждый со-своим нравом), конфигуратор трогать рискованно. Поэтому, чтобы-бы после наших экспериментов система не превратилась в труп, в своих программах мы будем использовать исключительно функции SetupDi_XXX. Эта группа функций как-нельзя лучше подходит для тестов и ознакомления, при этом имея довольно мощный функционал.
———————————————

Знакомство с классами устройств, и их идентификаторами GUID

Современная архитектура компьютерных систем имеет огромное количество устройств, и только часть из них внешние. К внешним относятся жёсткий диск, клавиатура, мышь, модем, монитор и прочая ботва, с которой нас знакомили на уроках информатики. Однако внутри чипсета материнской платы зарыты внутренние устройства – это различного рода шины, таймеры, контролёры, мосты и много другое. Более того, в системе могут присутствуют одинаковые по типу, но разные по назначению устройства, а значит их нужно как-то фильтровать.

Таким образом, все устройства в системе (будь-то внешние или внутренние) разделяются на классы, например: класс шины PCI, класс USB, видео-класс, класс принтеров, модемов, клавиатуры и т.д. В системе, буквально любое устройство обязательно принадлежит к какому-нибудь классу. Каждый класс устройств идентифицируется своим GUID«ом (глобальный уникальный идентификатор), который представляет из-себя 16-байтную (128 битную) запись вида: . Схематически это можно представить так:

Информационной базой всех устройств является системный реестр, где для каждого класса-устройств выделена своя ветвь. Все классы собраны в разделе реестра HKLM\SYSTEM\CurrentControlSet\Control\Class. В этой папке мы найдём зарегистрированные когда-либо в системе GUID’ы и даже тех классов, привязанных устройств к которым в текущий момент может и не быть. Например подключили мы к компьютеру месяц назад камеру, а потом убрали её за ненадобность. Это нужно учитывать при сканировании устройств, выставляя флаг DIGCF_PRESENT=2 (только активные девайсы).

При такой\древовидной организации базы-данных, чтобы получить информацию о конкретном устройстве мы должны указать его класс в виде идентификатора GUID. В ответ на этот запрос, система возвратит нам дескриптор данного класса (см.предыдущий рис.), который послужит указателем на соответствующую инфо-базу. Теперь просто сканируем эту базу от подвала до чердака, и получаем из реестра голограмму всех устройств указанного класса.

Забегая вперёд скажу, что для каждого из найденных устройств, функция SetupDiGetDeviceRegistryProperty() как пылесос может вытянуть до 37-ми его характеристик – именно такое количество SPDRP-флагов мы можем передавать ей в аргументе. Как-говорится – хоть лопатой греби..

В талмуде мелкомягких, глобальный идентификатор GUID описывается вполне легальной структурой. Например на рисунке выше, GUID характеризует класс USB-устройств и имеет значение: . Если копнуть доки, то можно найти значения GUID всех (само)настраивающихся устройств PnP – в представлении ассемблера каждая запись выглядит так, и я собрав их в инклуде setupapi.inc, прикрепил его в скрепке (в штатной поставке fasm’a их нет):

Основные API-функции для сбора информации

Будем считать, что с теорией разобрались – перейдём к практической части..
Из указанных 600-функций библиотеки setupapi.dll мы будем использовать всего 6-7. Эти функции позволят нам выжать достаточно информации от первого свидания с этой либой. В качестве демонстрации напишем приложение, которое перечислит все идентификаторы GUID системы и отобразит в читабельном виде, какому именно классу принадлежит тот-или-иной GUID. Здесь в окопах нас поджидают некоторые нюансы – разберём их в кратце..

1. В цикле обходит все классы и возвращает нам их GUID’ы функция CM_Enumerate_Classes() с таким прототипом:

Если коротко, то нам нужно организовать цикл и на каждой его итерации, начиная с нуля увеличивать индекс класса. Эта функция BOOL, так-что если она вернёт EAX=1, значит мы обошли всю базу и пора из цикла выходить. Второй аргумент – это указатель на 16 байтный буфер, в который функция будет сбрасывать GUID текущего индекса. Третий аргумент не используется и должен быть установлен в нуль.

Эта функция сбрасывает в буфер GUID в виде Unicode-строки, значит для вывода на консоль её нужно будет преобразовать в Ascii. Для этого будем просто читать по 2-байта, и перезаписывать в тот-же буфер по одному байту (т.е. отсекать парные нули). Вот как выглядит эта информация в секции-данных программы, после того-как функция StringFromGUID2() отработает:

4. Можно прикрутить в исходник код профилировщика, чтобы лицезреть время, потраченное программой на реализацию задуманного. Мы просто на входе в основную процедуру запомним текущие тики системного таймера функцией GetTickCount() , а на выходе из процедуры запросим их опять, и вычислим разницу. Так мы получим хоть какой-то метроном, который отстучит нам потраченное на исполнение кода время. Теме профайлеров мы посвятим отдельную статью, а пока будем довольствоваться этим алго времён динозавров.

Теперь, законченная реализация кода для вывода имени-класса по его GUID может выглядеть примерно так:

Что мы тут имеем? Значит всего классов-устройств в системе равно 60, и соответственно столько-же идентификаторов GUID. Пусть вас не смущает время выполнение данного кода 560 миллисекунд – это тестировалось на виртуальной машине VirtualBox, скорость которой можно сравнить с активностью уставшей улитки. К примеру на скрине ниже я запустил этот-же кодес на реальном процессоре под хр, так хрюша пробежала эту дистанцию всего за 32 мс – как говорится, почувствуйте разницу: 560/32=17.5 раз быстрее:

Перечисляем все, или принадлежащие только к одному классу устройства

1. SetupDiGetClassDevs() – возвращает дескриптор инфо-базы по GUID-класса (см.рис.2), или нуль в случае ошибки. На входе принимает 4 аргумента, первые-три из которых опциональны и могут быть равны нулю (в этом случае фильтр отключается и сканируются все устройства). В природе, на все случаи жизни имеются три распространённых шаблона аргументов этой функции, которые закоментированы в исходнике ниже – это шаблон для всех устройств, фильтр по текстовой маске (возможные варианты: USB/PCI/PCMCIA/SCSI), и фильтрация устройств по классу GUID.

2. SetupDiEnumDeviceInfo() – заполняет структуру SP_DEVINFO_DATA, которая описывает конкретный элемент в классе-устройств. Больше эта функция ничего не делает. Позже, мы должны будем передать указатель на эту структуру третьей функции в этой тусовке, чтобы она черпала с неё информацию. Для перечисления всего списка-устройств указанного класса, нужно поместить данную функцию в цикл, каждый раз увеличивая значение индекса на 1. Эта функция BOOL и возвращает EAX=0 при ошибке (последний элемент в списке):

3. SetupDiGetDeviceRegistryProperty() – последняя, довольно творческая единица и делает всю черновую работу. Именно эта функция лезет в системный реестр, заполняя наш приёмный буфер нарытими данными. Для начала посмотрим на её аргументы, а потом разберёмся с деталями:

Здесь мы рассмотрели всего 1% из имеющихся 600 функций в библиотеки setupapi.dll. За бортом осталась довольно могучая SetupDiGetDeviceInterfaceDetail() и многие другие. Однако когда-нибудь нужно сделать первый шаг к покорению этой вершины, что открывает богатые возможности для программирования железа из пользовательского режима. Кстати MSDN хорошо раскрывает эту тему и содержит много полезных материалов – учите и вам обязательно зачтётся.

Под занавес статьи, хочу привести пример bat-файла, который поможет вам искать различные константы в огромном море сишных (и не только) инклуд. Он универсальный и ищет текст по указанной маске, рекурсивно обходя все папки и файлы на жёстком диске. Просто кидаете его в корневую папку и подставляете текст для поиска в аргумент команды FINDSTR между двумя прямыми слэшами. Пошурша некоторое время блинами диска, батник вернём вам директории и имена файлов, где имеется указанный текст – очень удобно (для отображения кириллицы, сохраните его в кодировке OEM-866):

Источник

You may also like...