Поделиться через


Функция 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.

Код возврата Описание
STATUS_SUCCESS
Операция управления была правильно поставлена в очередь в систему ввода-вывода. После завершения операции состояние можно определить, изучив поле Состояние блока состояния ввода-вывода.

Комментарии

Служба 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

См. также раздел

Асинхронные вызовы процедур