Método IBackgroundCopyJob3::SetFileACLFlags (bits2_0.h)
Especifica la información del propietario y la ACL que se deben mantener al usar SMB para descargar o cargar un archivo.
Sintaxis
HRESULT SetFileACLFlags(
[in] DWORD Flags
);
Parámetros
[in] Flags
Marcas que identifican la información del propietario y de la ACL que se va a mantener al transferir un archivo mediante SMB. Las llamadas posteriores a este método sobrescriben las marcas anteriores. Especifique 0 para quitar las marcas del trabajo. Puede especificar cualquier combinación de las marcas siguientes.
Valor | Significado |
---|---|
|
Si se establece, se mantiene la información del propietario del archivo. De lo contrario, el usuario que llama al método Complete posee el archivo.
Debe tener SeRestorePrivilege para establecer esta marca. El grupo de administradores contiene el privilegio SeRestorePrivilege. |
|
Si se establece, se mantiene la información del grupo del archivo. De lo contrario, BITS usa el grupo principal del propietario del trabajo para asignar la información del grupo al archivo.
Debe tener SeRestorePrivilege para establecer esta marca. El grupo de administradores contiene el privilegio SeRestorePrivilege. |
|
Si se establece, BITS copia las ACE explícitas del archivo de origen y las ACE que se pueden heredar de la carpeta de destino. De lo contrario, BITS copia los ACE que se pueden heredar de la carpeta de destino. Si la carpeta de destino no contiene ACE heredables, BITS usa la DACL predeterminada de la cuenta del propietario. |
|
Si se establece, BITS copia las ACE explícitas del archivo de origen y las ACE que se pueden heredar de la carpeta de destino.
De lo contrario, BITS copia los ACE que se pueden heredar de la carpeta de destino.
Debe tener SeSecurityPrivilege en los equipos locales y remotos para establecer esta marca. El grupo de administradores contiene el privilegio SeSecurityPrivilege. |
|
Si se establece, BITS copia la información del propietario y la ACL. Esto es lo mismo que establecer todas las marcas individualmente. |
Valor devuelto
Este método devuelve los siguientes valores HRESULT , así como otros.
Código devuelto | Descripción |
---|---|
|
Establezca correctamente las marcas. |
|
Debe llamar a este método antes de que el trabajo realice la transición al estado BG_JOB_STATE_TRANSFERRED . |
|
El parámetro Flags contiene una marca que no está en la lista. |
Comentarios
Estas marcas se aplican a los nombres de archivo remotos que especifican el protocolo SMB. BITS omite las marcas de las transferencias HTTP.
BITS propaga las marcas de tiempo de archivo y los atributos (no los atributos extendidos) para los archivos SMB.
BITS aplica la información del propietario y la ACL al archivo en el momento en que se completa la transferencia de archivos, no cuando crea el archivo de transferencia temporal. BITS no especifica un descriptor de seguridad cuando crea el archivo de transferencia temporal (el archivo hereda la información de ACL del directorio de destino). Si los datos transferidos son confidenciales, la aplicación debe especificar una ACL adecuada en el directorio de destino para evitar el acceso no autorizado.
Para asegurarse de que el propietario y la información de ACL adecuados se establecen en todos los archivos del trabajo, llame a este método después de crear el trabajo y antes de llamar al método IBackgroundCopyJob::Resume . De lo contrario, los archivos transferidos antes de establecer las marcas no contendrán la información adecuada del propietario y la ACL.
Este método se modela después del comando XCopy DOS.
El propietario y la información de ACL no se mantienen si descarga en un sistema de archivos FAT.
Si el usuario no tiene privilegios en los equipos locales y remotos para copiar la información del propietario o la ACL, BITS coloca el trabajo en un estado de error transitorio y establece el código de error en E_ACCESSDENIED.
Ejemplos
En el ejemplo siguiente se muestra cómo llamar al método SetFileACLFlags para especificar qué información de propietario y ACL se mantiene con los archivos que BITS descarga. En el ejemplo se supone que la variable IBackgroundCopyJob, pJob , es válida, apunta a un nuevo trabajo y se suspende.
IBackgroundCopyJob *pJob;
IBackgroundCopyJob3 *pJob3 = NULL;
//Need to query the IBackgroundCopyJob interface for an IBackgroundCopyJob3
//interface pointer. The IBackgroundCopyJob3 interface contains the SetACLFlags method.
hr = pJob->QueryInterface(__uuidof( IBackgroundCopyJob3 ), (void**)&pJob3;);
if (S_OK == hr)
{
pJob->Release(); //No longer need the IBackgoundCopyJob interface pointer.
//Copy the group and DACL information for each file.
hr = pJob3->SetACLFlags(BG_COPY_FILE_GROUP | BG_COPY_FILE_DACL);
if (FAILED(hr))
{
//Handle error.
}
... //Add one or more files and resume the job.
pJob3->Resume();
//When done, release the interface pointer.
pJob3->Release();
}
else
{
//Handle error. QueryInterface will return E_NOINTERFACE if the version of BITS
//running on the computer is less than BITS 2.0.
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista, Windows XP con SP2,KB842773 en Windows Server 2003 y Windows XP |
Servidor mínimo compatible | Windows Server 2008, Windows Server 2003 con SP1 |
Plataforma de destino | Windows |
Encabezado | bits2_0.h (incluya Bits.h) |
Library | Bits.lib |
Archivo DLL | BitsPrx3.dll |