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


код элемента управления FSCTL_GET_WOF_VERSION

Код управления FSCTL_GET_WOF_VERSION ввода-вывода (IOCTL) используется для запроса версии драйвера, используемого для поддержки определенного поставщика.

Для выполнения этой операции вызовите FltFsControlFile или ZwFsControlFile со следующими параметрами.

BOOL 
   WINAPI 
   DeviceIoControl( (HANDLE)       hDevice,         // handle to device
                    (DWORD)        FSCTL_GET_WOF_VERSION, // dwIoControlCode
                    (LPDWORD)      lpInBuffer,      // input buffer
                    (DWORD)        nInBufferSize,   // size of input buffer
                    (LPDWORD)      lpOutBuffer,     // output buffer
                    (DWORD)        nOutBufferSize,  // size of output buffer
                    (LPDWORD)      lpBytesReturned, // number of bytes returned
                    (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure

Параметры

  • hDevice [in]: дескриптор устройства. Чтобы получить дескриптор устройства, вызовите функцию CreateFile или аналогичный API.

  • dwIoControlCode [in]: код элемента управления для операции. Для этой операции используйте FSCTL_GET_WOF_VERSION .

  • lpInBuffer: входной буфер для операции. Это указатель на структуру WOF_EXTERNAL_INFO .

  • nInBufferSize [in]: размер входного буфера в байтах. Это должно быть значение sizeof(WOF_EXTERNAL_INFO).

  • lpOutBuffer [out]: выходной буфер для операции. Это указатель на структуру WOF_VERSION_INFO .

  • nOutBufferSize [in]: размер выходного буфера в байтах. Это должно быть значение sizeof(WOF_VERSION_INFO).

  • lpBytesReturned [out]: указатель на переменную, которая получает размер данных, хранящихся в выходном буфере, в байтах.

    Если выходной буфер слишком мал, вызов завершается ошибкой, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а значение lpBytesReturned равно нулю.

    Если lpOverlapped имеет значение NULL, lpBytesReturned не может иметь значение NULL. Даже если операция не возвращает выходные данные, а lpOutBuffer имеет значение NULL, DeviceIoControl использует lpBytesReturned. После такой операции значение lpBytesReturned не имеет смысла.

    Если значение lpOverlapped не равно NULL, lpBytesReturned может иметь значение NULL. Если этот параметр не имеет значения NULL и операция возвращает данные, функция lpBytesReturned не имеет смысла, пока не завершится перекрывающаяся операция. Чтобы получить количество возвращенных байтов, вызовите Метод GetOverlappedResult. Если параметр hDevice связан с портом завершения ввода-вывода, можно получить количество возвращаемых байтов, вызвав Метод GetQueuedCompletionStatus.

  • lpOverlapped [in]: указатель на структуру OVERLAPPED .

    Если hDevice был открыт без указания FILE_FLAG_OVERLAPPED, lpOverlapped игнорируется.

    Если hDevice был открыт с флагом FILE_FLAG_OVERLAPPED , операция выполняется как перекрываемая (асинхронная) операция. В этом случае lpOverlapped должен указывать на допустимую структуру OVERLAPPED , содержащую дескриптор объекта события. В противном случае функция завершается сбоем непредсказуемым образом.

    Для перекрывающихся операций DeviceIoControl возвращает немедленно, а объект события получает сигнал о завершении операции. В противном случае функция не возвращается, пока операция не будет завершена или не возникнет ошибка.

Блок состояния

Если операция завершается успешно, DeviceIoControl возвращает ненулевое значение.

Если операция завершается сбоем или находится в состоянии ожидания, DeviceIoControl возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Требования

Тип требования Требование
Минимальная версия клиента Windows 10
Заголовок Ntifs.h (включая Ntifs.h или Fltkernel.h)