Функция NtDeviceIoControlFile (winternl.h)
Не рекомендуется. Создает дескрипторы для предоставленных буферов и передает нетипизированные данные драйверу устройства, связанному с дескриптором файла. NtDeviceIoControlFile заменен элементом DeviceIoControl.
Синтаксис
__kernel_entry NTSTATUS NtDeviceIoControlFile(
[in] HANDLE FileHandle,
[in] HANDLE Event,
[in] PIO_APC_ROUTINE ApcRoutine,
[in] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG IoControlCode,
[in] PVOID InputBuffer,
[in] ULONG InputBufferLength,
[out] PVOID OutputBuffer,
[in] ULONG OutputBufferLength
);
Параметры
[in] FileHandle
Откройте дескриптор файла или устройства, которому должны быть предоставлены сведения об элементе управления.
[in] Event
Дескриптор события, которое должно быть установлено в signaled
состояние по завершении операции. Этот параметр может принимать значение NULL.
[in] ApcRoutine
Процедура, вызываемая после завершения операции. Этот параметр может принимать значение NULL. Дополнительные сведения об асинхронных вызовах процедур см. в разделе Асинхронные вызовы процедур.
[in] ApcContext
Указатель, который необходимо передать в ApcRoutine после завершения операции. Этот параметр является обязательным, если указан ApcRoutine .
[out] IoStatusBlock
Переменная для получения окончательного состояния завершения и сведений об операции. Вызовы службы, возвращающие сведения, возвращают длину данных, записываемых в выходной буфер в поле Сведения этой переменной.
[in] IoControlCode
Код, указывающий, какая функция управления вводом-выводом устройства должна быть выполнена.
[in] InputBuffer
Указатель на буфер, содержащий сведения, которые должны быть переданы целевому устройству. Этот параметр может принимать значение NULL. Эти сведения зависят от устройства.
[in] InputBufferLength
Длина InputBuffer в байтах. Если буфер не указан, это значение игнорируется.
[out] OutputBuffer
Указатель на буфер, который получает зависимые от устройства возвращаемые сведения от целевого устройства. Этот параметр может принимать значение NULL.
[in] OutputBufferLength
Длина OutputBuffer в байтах. Если буфер не указан, это значение игнорируется.
Возвращаемое значение
Различные значения NTSTATUS определяются в NTSTATUS. H, который распространяется с DDK Windows.
Код возврата | Описание |
---|---|
|
Операция управления была правильно поставлена в очередь в систему ввода-вывода. После завершения операции состояние можно определить, изучив поле Состояние блока состояния ввода-вывода. |
Комментарии
Служба NtDeviceIoControlFile — это зависимый от устройства интерфейс, который расширяет возможности управления, предоставляемые приложениями на различных устройствах в системе. Этот API обеспечивает согласованное представление входных и выходных данных в системе, предоставляя приложению и драйверу зависимый от устройства метод указания интерфейса связи.
Тип доступа к файлу, который требуется вызывающему объекту, зависит от фактической выполняемой операции.
После завершения службы событие, если указано, устанавливается в signaled
состояние . Если параметр Event не указан, то объект файла, указанный FileHandle , имеет signaled
состояние . Если указан ApcRoutine , он вызывается с ApcContext и IoStatusBlock в качестве аргументов.
Так как для этой функции нет библиотеки импорта, необходимо использовать GetProcAddress.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winternl.h |
Библиотека | ntdll.lib |
DLL | ntdll.dll |