Introducción a Dokan para Windows
Actualmente, Dokan ha sido reemplazado por Dokany (desde la versión 0.6.0) y tiene un amplio soporte para arquitecturas X86 y ARM de 32 o 64 bits. Las versiones de Windows compatibles incluyen
- Windows Server 2019/2016/2012 R2/2012/2008 R2 SP1
- Windows 10/8.1/8/7 SP1
En definitiva, lo mismo que FUSE.
La biblioteca Dokan incluye una biblioteca de enlaces dinámicos de espacio de usuario (dokan.dll) y un controlador de kernel (dokan1.sys). (Se puede comparar con FUSE, que proporciona la biblioteca de enlaces dinámicos del usuario libfuse.so y el controlador del kernel fuse.ko). Los sistemas de archivos creados con la biblioteca dokan se consideran programas de sistemas de archivos.
Las operaciones de archivos (como las solicitudes CreateFile, ReadFile y WriteFile) se envían al subsistema del kernel y luego se pasan al controlador. El programa del sistema de archivos registra una interfaz de devolución de llamada con el controlador a través de la interfaz de función proporcionada por el modo de usuario. El controlador llamará a estas funciones de devolución de llamada cuando reciba información y, finalmente, el programa del sistema de archivos en modo de usuario maneja estas solicitudes.
El primer paso es implementar las funciones en la estructura DOKAN_OPERATION. Estas funciones se registran como funciones de devolución de llamada y DOKAN_OPERACIONES se pasan como parámetros a la función principal DokanMain.
La secuencia general de operaciones en archivos es
-?DOKAN_OPERACIONES::ZwCreateFile
- otras operaciones, como escribir, leer, etc.
- DOKAN_OPERACIONES::CleanUp
-?DOKAN_ OPERACIONES::CloseFile
Es decir, crear, operar, limpiar y cerrar. CleanUp limpia principalmente solicitudes y cierra identificadores de archivos, mientras que CloseUp limpia las estructuras de contexto restantes.
Cada operación devuelve STATUS_SUCCESS en caso de éxito y un estado de error diferente de NTSTATUS en caso de error. Además, cada operación Dokan lleva una estructura DOKAN_FILE_INFO. El objetivo principal de esta estructura es guardar la información del archivo de la operación actual, como información de operación de contexto, si el tipo de directorio es, si se debe leer el caché, operaciones de sincronización y otra información que define el comportamiento de la operación. Consulte las direcciones en el apéndice para obtener más detalles.
Para lograr operaciones del sistema de archivos seguras para subprocesos, llame a la función DokanMain para montar el sistema de archivos en Windows. El montaje se bloqueará hasta que se desmonte el sistema de archivos.
Mirror se proporciona en el paquete fuente como un caso de estudio para comenzar con Dokan.
Cuando utilice Dokan Fuse, debe vincular la biblioteca de enlaces dinámicos dokanfuse.dll. También existen algunos problemas de portabilidad porque Linux y Windows manejan la eliminación y el cambio de nombre de manera diferente (Linux permite la eliminación de archivos abiertos, Windows no).
Dirección del proyecto:/dokan-dev/dokany
Descripción de la estructura DOKAN_FILE_INFO: https://dokan-dev.github.io/dokany-doc/html/struct_d_o_k_a_n___f_i_l_e___ i_n_f_o.html