estructura CF_SYNC_POLICIES (cfapi.h)
Define las directivas de sincronización usadas por una raíz de sincronización.
Sintaxis
typedef struct CF_SYNC_POLICIES {
ULONG StructSize;
CF_HYDRATION_POLICY Hydration;
CF_POPULATION_POLICY Population;
CF_INSYNC_POLICY InSync;
CF_HARDLINK_POLICY HardLink;
CF_PLACEHOLDER_MANAGEMENT_POLICY PlaceholderManagement;
} CF_SYNC_POLICIES;
Miembros
StructSize
Tamaño de la estructura CF_SYNC_POLICIES
.
Hydration
La directiva de hidratación permite a un proveedor de sincronización controlar cómo la plataforma debe hidratar los archivos de marcador de posición. Consta de una directiva principal y un conjunto de modificadores de directiva.
La directiva principal tiene cuatro valores posibles:
Directiva | Descripción |
---|---|
ALWAYS_FULL | Cuando ALWAYS_FULL se selecciona , se producirá un error en la plataforma, con HRESULT ERROR_CLOUD_FILE_INVALID_REQUEST , cualquier operación de marcador de posición que pudiera dar lugar a un marcador de posición no totalmente hidratado, que incluye CfCreatePlaceholders, CfDehydratePlaceholder, CfUpdatePlaceholder con la opción de deshidratación y CfConvertPlaceholder con la opción de deshidratación . |
FULL | Cuando FULL se selecciona, la plataforma permitirá que un marcador de posición se deshidrate. Cuando la plataforma detecta el acceso a un marcador de posición deshidratado, se asegurará de que el contenido completo del marcador de posición esté disponible localmente antes de completar la solicitud de E/S del usuario, incluso si la solicitud solo solicita 1 byte. |
PROGRESIVA | Cuando PROGRESSIVE se selecciona, la plataforma permitirá que un marcador de posición se deshidrate. Cuando la plataforma detecta el acceso a un marcador de posición deshidratado, completará la solicitud de E/S de usuario en cuanto determine que se reciben datos suficientes del proveedor de sincronización. Sin embargo, la plataforma promete seguir solicitando el contenido restante en el marcador de posición del proveedor de sincronización en segundo plano hasta que el contenido completo del marcador de posición esté disponible localmente o se cierre el último identificador de usuario en el marcador de posición.Tenga en PROGRESSIVE cuenta que es posible que los proveedores de sincronización que opten por no supongan que las devoluciones de llamada de hidratación llegan secuencialmente desde el desplazamiento 0. Es decir, se espera que los proveedores de sincronización con PROGRESSIVE la directiva controle las búsquedas aleatorias en el marcador de posición. |
PARTIAL | La PARTIAL directiva es muy similar a PROGRESSIVE . La única diferencia entre los dos es la falta de hidratación continua en segundo plano con la PARTIAL directiva. |
Actualmente se admiten tres modificadores de directiva: VALIDATION_REQUIRED
, STREAMING_ALLOWED
y AUTO_DEHYDRATION_ALLOWED
. En general, los modificadores se pueden mezclar y coincidir con cualquier directiva principal y otros modificadores de directiva siempre que la combinación no esté en conflicto.
Modificador de directiva | Descripción |
---|---|
VALIDATION_REQUIRED | Este modificador de directiva ofrece dos garantías para un proveedor de sincronización. En primer lugar, garantiza que los datos devueltos por el proveedor de sincronización siempre se conservan en el disco antes de que se devuelvan a la aplicación de usuario. En segundo lugar, permite al proveedor de sincronización recuperar los mismos datos que ha devuelto anteriormente a la plataforma y validar su integridad. Solo tras una confirmación correcta de la integridad por parte del proveedor de sincronización, la plataforma completará la solicitud de E/S del usuario. Este modificador ayuda a admitir la integridad de datos de un extremo a otro a costa de E/S de disco adicional. |
STREAMING_ALLOWED | Este modificador de directiva concede a la plataforma el permiso para no almacenar ningún dato devuelto por un proveedor de sincronización en discos locales. Este modificador de directiva es mutuamente excluyente con VALIDATION_REQUIRED . Se produce un error en la API cuando ERROR_INVALID_PARAMETER se especifican ambas marcas. |
AUTO_DEHYDRATION_ALLOWED | Este modificador de directiva concede a la plataforma el permiso para deshidratar los marcadores de posición de archivos en la nube sincronizados sin la ayuda de los proveedores de sincronización. Sin esta marca, la plataforma no puede llamar directamente a CfDehydratePlaceholder . En su lugar, la única manera admitida de deshidratar un marcador de posición de archivo en la nube es borrar el atributo anclado del archivo y establecer el atributo desanclado del archivo. A continuación, el motor de sincronización realizará la deshidratación real de forma asincrónica después de recibir la notificación de cambio de directorio en los dos atributos. Cuando se especifica esta marca, se permitirá que la plataforma invoque CfDehydratePlaceholder directamente en cualquier marcador de posición de archivo en la nube sincronizado. Se recomienda que los proveedores de sincronización admitan la deshidratación automática. |
ALLOW_FULL_RESTART_HYDRATION | Este modificador de directiva concede el permiso de plataforma para hidratar completamente un archivo de forma sincrónica cuando intercepta un intento por un filtro av para examinar el archivo. Los proveedores de sincronización que quieran usar RestartHidrata para cambiar de fileSize una devolución de llamada FetchData deben optar por la ALLOW_FULL_RESTART_HYDRATION directiva para evitar posibles interbloqueos con software antivirus y antimalware que intentan examinar el archivo y el proveedor que intenta cambiar fileSize con RestartHidrata.Nota: Este modificador solo se admite si el PlatformVersion.IntegrationNumber obtenido de CfGetPlatformInfo es 0x500 o superior. |
Population
La directiva de rellenado permite a un proveedor de sincronización controlar cómo la plataforma debe crear el espacio de nombres de marcador de posición, tanto directorios como archivos. Actualmente hay tres directivas principales sin modificadores definidos:
Directiva | Descripción |
---|---|
ALWAYS_FULL | Cuando ALWAYS_FULL se selecciona , la plataforma supone que el espacio de nombres completo siempre está disponible localmente. Nunca reenviará ninguna solicitud de enumeración de directorios al proveedor de sincronización. |
FULL | Con la FULL directiva de rellenado, cuando la plataforma detecta el acceso en un directorio no rellenado completamente, solicitará al proveedor de sincronización que devuelva todas las entradas del directorio antes de completar la solicitud del usuario. |
PARTIAL | Con la PARTIAL directiva de rellenado, cuando la plataforma detecta el acceso en un directorio no rellenado completamente, solo solicitará las entradas requeridas por la aplicación de usuario desde el proveedor de sincronización. |
InSync
La InSync
directiva permite que un proveedor de sincronización controle cuándo la plataforma debe borrar el estado en sincronización en un marcador de posición. Además de borrar siempre la sincronización en cualquier modificación de datos, la plataforma actualmente puede borrar la sincronización en los cambios de cualquier combinación de tres atributos de archivo (ReadOnly, System y Hidden) y dos veces de archivo (CreateTime y LastWriteTime). Estas directivas se pueden aplicar a archivos y directorios por separado.
HardLink
De forma predeterminada, la plataforma no permite crear vínculos duros en ningún marcador de posición. Sin embargo, los proveedores de sincronización que son capaces de controlar vínculos duros pueden indicar a la plataforma que habilite la compatibilidad a través de la ALLOWED
directiva. Con esta directiva, las aplicaciones pueden crear tantos vínculos duros como el sistema de archivos admita siempre que los vínculos estén en la misma raíz de sincronización o en ninguna raíz de sincronización. La plataforma obligará a hidratar un marcador de posición cuando se introduzca el primer vínculo de raíz fuera de sincronización y revertirá un marcador de posición al archivo normal cuando se quite su último vínculo raíz en sincronización. La creación de vínculos duros que no es compatible con la directiva producirá un error con HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS
. Las operaciones de marcador de posición que no son compatibles con la directiva también producirán un error con ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS
.
PlaceholderManagement
De forma predeterminada, solo un proveedor de sincronización puede realizar operaciones de administración de marcadores de posición en una raíz de sincronización. Los procesos del proveedor de no sincronización solo pueden realizar operaciones de administración de marcadores de posición si la raíz de sincronización está inactiva (es decir, cuando ningún proveedor de sincronización está conectado a la raíz de sincronización). Estas directivas, cuando están habilitadas, permiten que los procesos del proveedor que no son de sincronización realicen operaciones de administración de marcadores de posición respectivas en una raíz de sincronización activa. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT
es la directiva predeterminada, lo que permite que solo un proveedor de sincronización conectado realice cualquier operación de administración de marcadores de posición. Las tres directivas siguientes se pueden especificar en cualquier combinación:
Directiva | Descripción |
---|---|
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED | Cuando se especifica esta directiva durante el registro, cualquier proceso puede crear un marcador de posición dentro de una raíz de sincronización activa llamando a CfCreatePlaceholders. |
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED | Cuando se especifica esta directiva durante el registro, cualquier proceso puede convertir un archivo o un directorio dentro de una raíz de sincronización activa en un marcador de posición llamando a CfConvertToPlaceholder. |
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED | Cuando se especifica esta directiva durante el registro, cualquier proceso puede actualizar un marcador de posición dentro de una raíz de sincronización activa a través de la API CfUpdatePlaceholder. |
Nota
Estas marcas solo se admiten si el PlatformVersion.IntegrationNumber
obtenido de CfGetPlatformInfo es 0x310
o superior.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10, versión 1709 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2016 [solo aplicaciones de escritorio] |
Encabezado | cfapi.h |