- Работа с функцией QueryDosDeviceW в библиотеке fileapi.h: полное руководство
- Определение типов устройств
- Remarks
- Use in Setup programs
- Namespace and Class Names
- Null-Terminated Strings
- Tagged Remarks
- Return Values
- Windows Device Types
- Device Object and Device Type
- Syntax and Parameters
- SetupAPI Usage
- Examples
- Local and Network Names
- Supported Windows Versions
- Parameters
- Subscribe to RSS
- Синтаксис
- Параметры
- Возвращаемые значения
- Пример использования
- Заключение
- Видео:
- Разработка приложений с помощью WinAPI. Урок 12 DLL. Функции
Работа с функцией QueryDosDeviceW в библиотеке fileapi.h: полное руководство
Функция QueryDosDeviceW предназначена для взаимодействия с системой Windows и предоставляет пользователю информацию о именах устройств и пространствах имен, используемых в операционной системе. Независимо от того, ищете ли вы ответы на определенные вопросы или просто интересуетесь внутренними параметрами Windows, эта функция позволяет получить информацию, необходимую для уточнения заданных вопросов.
Одним из основных параметров, передаваемых в функцию QueryDosDeviceW, является строка с именами пространств имен, разделенными точками с запятой. Эти имена могут относиться к различным классам устройств, например, жестким дискам, CD-приводам или сетевым папкам. Если вы хотите получить информацию только для определенного класса устройств, вы можете указать соответствующий класс в этом параметре.
Кроме того, функция QueryDosDeviceW позволяет получить информацию о дополнительных параметрах, связанных с определенным пространством имен. Например, вы можете узнать, какие имена пространств имен относятся к определенному классу устройств или какие классы устройств могут быть удостоверены с помощью указанного идентификатора пространства имен.
Если вам интересно, как эта функция взаимодействует с другими системными функциями, такими как GetLastError или функции из библиотеки setupapi.h, то в следующих разделах каждая из этих вопросов будет подробно рассмотрена. Независимо от ваших вопросов и потребностей, функция QueryDosDeviceW предлагает широкий спектр ответов и возможностей для работы с именами устройств и пространствами имен в Windows.
Определение типов устройств
Для определения типов устройств можно использовать уже заданные системой типы устройств или задать свои собственные.
В стандартных настройках операционной системы Windows, она содержит определенное количество системных типов устройств. Если вы хотите получить доступ только к определенным типам устройств, вы можете использовать определенные системой типы, такие, как FILE_DEVICE_DISK
, которые позволяют фильтровать только устройства определенных классов.
Тем не менее, вы также можете задать свои собственные типы устройств приложения. Для этого вам необходимо указать реквизиты DEV_DEVICE_NAME
и DEV_DEVICE_ID
. Этот тип устройства будет возвращен функцией вместе с остальными типами. После этого, вы сможете использовать полученное имя устройства для дальнейшего управления и распознавания.
Возвращаемые имена устройств могут быть получены в формате NULL-терминированной строки.
Пример использования функции QueryDosDeviceW
для получения типов устройств вы можете найти в документации Microsoft.
Если функция завершается успешно, то возвращаемое значение будет ненулевым. В противном случае, вы можете использовать функцию GetLastError
для определения ошибки и выполнения соответствующего действия.
Если вам нужно получить все типы устройств, установленные в системе, вы можете использовать функцию SetupDiGetClassDevs
из файла setupapi.h
. Эта функция позволяет обозревать и подписываться на различные типы устройств в системе Windows, включая плагины и дополнительные интерфейсы. Чтобы использовать эту функцию, вам нужно импортировать библиотеку setupapi.lib
.
Примечания:
- Вы также можете использовать функции
CreateIoCompletionPort
иCreateDeviceIoControl
для создания и управления объектами устройств в пространстве ядра Windows. - Помимо стандартных типов устройств, можно создавать и использовать дополнительные классы устройств, например, для работы с локальными или удаленными устройствами, используя некоторые специфические параметры или значения.
- Перед использованием функции
QueryDosDeviceW
, убедитесь, что ваше приложение значится в списке доверенных приложений.
Remarks
The QueryDosDeviceW function is used to query the MS-DOS device names for the local system. These device names can be used with CreateFile
to access the corresponding device.
Use in Setup programs
In setup programs, this function can be used to determine which devices are currently installed in the system and to make decisions based on this information. For example, you can use the QueryDosDeviceW
function to check if a specific device is installed or to enumerate all installed devices.
Namespace and Class Names
This function does not work with file names or directories. It is specifically used for querying device names. If you are looking for file and directory names, you must use other functions such as FindFirstFile
or GetFileAttributes
.
Null-Terminated Strings
All strings passed to this function must be null-terminated. If a null-terminated string is not passed as a parameter, the function will return ERROR_INVALID_PARAMETER.
Tagged Remarks
When querying the device names, some names may have a tag appended. For example, if the device name is «COM1», the actual name returned by QueryDosDevice may be «COM1\Device\VCP0».
Return Values
This function returns the length of the device name string that is returned, in characters. If the function fails, it returns zero. To get extended error information, call GetLastError.
Windows Device Types
The QueryDosDeviceW function can be used to query device names for various types of devices, such as file, disk, volume, and window station devices.
Device Object and Device Type
A device object represents a device that is installed on the system. Each device object has a device type, which indicates the class of the device.
Syntax and Parameters
The syntax to use this function is:
- BOOL QueryDosDeviceW(
LPCWSTR lpDeviceName,
LPWSTR lpTargetPath,
DWORD ucchMax
);
SetupAPI Usage
This function can be used in conjunction with other functions in the SetupAPI library, such as SetupDiGetClassDevsW and SetupDiCreateDeviceInfoList. These functions provide more options for device setup and management.
Examples
For examples on how to use the QueryDosDeviceW function, you can browse the SetupAPI examples in the Windows SDK. There are also many online resources and forums where you can ask questions and get answers about using this function and related topics.
Local and Network Names
The QueryDosDeviceW function can be used to query the local MS-DOS device names as well as network device names. It is not limited to a specific type of device, but it depends on the parameters passed to the function.
Supported Windows Versions
This function is supported in Windows 7 and later versions of the Windows operating system.
Parameters
Функция QueryDosDeviceW принимает следующие параметры:
Параметр | Описание |
---|---|
lpDeviceName | Указатель на null-terminated строку, содержащую имена MS-DOS устройств. В этой строке каждое имя устройства разделено символом перевода строки. |
lpTargetPath | Указатель на буфер, в который будет записан путь к устройству, с которым связано имя MS-DOS устройства. Должен быть не менее MAX_PATH символов в длину. |
ucchMax | Задает максимальную длину буфера lpTargetPath в символах. Это значение должно быть больше или равно MAX_PATH. |
Если функция успешно выполнена, возвращается ненулевое значение, и путь к устройству записывается в буфер lpTargetPath. Если функция не удалась, возвращается ноль, и для получения расширенной информации об ошибке можно вызвать функцию GetLastError.
Значение параметра lpDeviceName может быть NULL, тогда будут возвращены все текущие имена MS-DOS устройств.
Если ucchMax равен 0, функция ничего не делает, но возвращает общее количество символов, необходимых для хранения всех имен MS-DOS устройств.
QueryDosDevice возвращает количество символов, записанных в буфер lpTargetPath, не включая null-символ.
Subscribe to RSS
Функция QueryDosDeviceW в библиотеке fileapi.h
Функция QueryDosDeviceW является частью Windows API и предназначена для получения информации о пространствах имен устройств, используемых в операционной системе Windows. Она позволяет получить список всех имен, которые ассоциированы с определенным устройством.
Использование этой функции может быть полезно во множестве сценариев, таких как получение списка всех установленных дисков или устройств, поиск устройства по заданному имени и т.д.
Синтаксис
BOOL QueryDosDeviceW( LPCWSTR lpDeviceName, LPWSTR lpTargetPath, DWORD ucchMax ); |
Параметры
lpDeviceName
:
Указатель на строку, содержащую имя устройства или пространства имен. Имя устройства или пространства имен не является завершающим символом NULL-terminated.
lpTargetPath
:
Указатель на буфер для принятия раскрытого пути. Если параметр lpDeviceName является пространством имен, то lpTargetPath будет содержать все имена, ассоциированные с этим пространством имен.
ucchMax
:
Максимальная длина lpTargetPath в символах (включая завершающий символ NULL).
Возвращаемые значения
Функция возвращает ненулевое значение в случае успеха или ноль при ошибке. Для получения расширенной информации об ошибке можно использовать функцию GetLastError().
Пример использования
Ниже приведен пример кода, демонстрирующий использование функции QueryDosDeviceW для получения списка всех установленных дисков:
#include <stdio.h> #include <windows.h> int main() { WCHAR lpTargetPath[50]; DWORD returnLength; for (WCHAR driveLetter = L'A'; driveLetter <= L'Z'; driveLetter++) { WCHAR deviceName[4] = {driveLetter, L':', L'\\', L'\0'}; if (QueryDosDeviceW(deviceName, lpTargetPath, sizeof(lpTargetPath)) != 0) { wprintf(L"Drive %c is %s ", driveLetter, lpTargetPath); } } return 0; }
Заключение
Функция QueryDosDeviceW предоставляет удобный способ получить информацию о пространствах имен устройств в операционной системе Windows. Она особенно полезна при разработке программ, в которых необходима работа с устройствами или обработка различных имен устройств.
Если у вас возникнут вопросы или вы заинтересованы в изучении этой функции в деталях, рекомендуется обратиться к документации Windows и другим онлайн-ресурсам, где можно найти подробные ответы на возможные вопросы и примеры использования данной функции.
Видео:
Разработка приложений с помощью WinAPI. Урок 12 DLL. Функции
Разработка приложений с помощью WinAPI. Урок 12 DLL. Функции by VoidPtr 7,335 views 5 years ago 14 minutes, 14 seconds