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
BG_COPY_FILE_OWNER
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.

BG_COPY_FILE_GROUP
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.

BG_COPY_FILE_DACL
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.
BG_COPY_FILE_SACL
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.

BG_COPY_FILE_ALL
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
S_OK
Establezca correctamente las marcas.
BG_E_INVALID_STATE
Debe llamar a este método antes de que el trabajo realice la transición al estado BG_JOB_STATE_TRANSFERRED .
E_INVALIDARG
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

Consulte también

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags