Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El código de control de FSCTL_OFFLOAD_READ inicia una descarga de lectura para un bloque de datos en un sistema de almacenamiento que admite la descarga de primitivos de lectura.
Para realizar esta operación, llame a FltFsControlFile o ZwFsControlFile con los parámetros siguientes.
Parámetros
Instancia [in]: FltFsControlFile solo. Puntero de instancia opaco para el autor de la llamada. Este parámetro es necesario y no puede ser NULL.
FileObject [in]: FltFsControlFile solo. Objeto de puntero de archivo que especifica el archivo desde el que se va a leer. Este parámetro es necesario y no puede ser NULL.
FileHandle [in]: ZwFsControlFile solo. Identificador de archivo del archivo del que se va a leer. Este parámetro es necesario y no puede ser NULL.
FsControlCode [in]: el código de control de la operación. Use FSCTL_OFFLOAD_READ para esta operación.
InputBuffer [in]: puntero a una estructura de FSCTL_OFFLOAD_READ_INPUT , que contiene el tamaño y el desplazamiento de un bloque de datos que se va a leer.
InputBufferLength [in]: Tamaño, en bytes, del búfer al que apunta InputBuffer. Este valor es sizeof(FSCTL_OFFLOAD_READ_INPUT).
OutputBuffer [out]: puntero a una estructura FSCTL_OFFLOAD_READ_OUTPUT , que recibe los resultados de la operación de lectura de descarga.
OutputBufferLength [out]: tamaño, en bytes, del búfer al que apunta el parámetro OutputBuffer . Este valor debe ser al menos sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
Bloque de estado
FltFsControlFile o ZwFsControlFile devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, la función adecuada podría devolver uno de los siguientes valores NTSTATUS.
| Código | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | El identificador especificado no es un identificador de archivo válido |
| STATUS_INVALID_PARAMETER | Un parámetro no es válido. Vea comentarios. |
| STATUS_VOLUME_DISMOUNTED | El volumen del sistema de archivos se desmonta. |
| STATUS_NOT_SUPPORTED | Las operaciones de lectura de descarga no se admiten en este volumen. |
| STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | No se admite el tipo de archivo solicitado. Las operaciones de descarga no se admiten en estos tipos de archivo: un archivo transaccionado (TxF); Archivos que no son de usuario; Archivos comprimidos; Archivos cifrados; Archivos dispersos; Archivos de metadatos NTFS. |
| STATUS_FILE_DELETED | El flujo de datos de este archivo no es válido. |
| STATUS_FILE_CLOSED | El identificador de archivo está cerrado. |
| STATUS_INVALID_HANDLE | El identificador de archivo especificado no es válido. |
| STATUS_FILE_LOCK_CONFLICT | Acceso de lectura insuficiente debido al estado actual de bloqueo de archivos. |
| STATUS_END_OF_FILE | El miembro FileOffset de FSCTL_OFFLOAD_READ_INPUT comienza después del final del archivo (EOF). |
| STATUS_DISMOUNTED_VOLUME | No se puede producir una lectura de descarga en un volumen desmontado. |
| STATUS_INSUFFICIENT_RESOURCES | Hay recursos insuficientes disponibles para completar la solicitud. |
| STATUS_BUFFER_TOO_SMALL | OutputBufferLength es demasiado pequeño para que OutputBuffer reciba una estructura de FSCTL_OFFLOAD_READ_OUTPUT . |
Observaciones
La descarga de lectura solo está disponible para archivos normales. Consulte la descripción de STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED para obtener una lista de tipos de archivo no admitidos.
Es posible que las lecturas empiecen más allá de la longitud de datos válida (VDL), pero no más allá de EOF.
Cuando se devuelve STATUS_INVALID_PARAMETER, el error podría ser uno de los siguientes parámetros no válidos:
- El tamaño del archivo es menor que PAGE_SIZE.
-
InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_INPUT). - Uno o varios de estos miembros de FSCTL_OFFLOAD_READ_INPUT son incorrectos:
- FileOffset no es un múltiplo del tamaño del sector lógico del volumen.
- CopyLength no es un múltiplo del tamaño del sector lógico del volumen.
- El tamaño no es el tamaño de la estructura FSCTL_OFFLOAD_READ_INPUT .
- FileOffset + CopyLength>MAXULONGLONG.
Requisitos
| Tipo de requisito | Requirement |
|---|---|
| Cliente mínimo compatible | Windows 8 |
| Header | Ntifs.h (incluya Ntifs.h o Fltkernel.h) |