Función NetShareAdd (lmshare.h)

Comparte un recurso de servidor.

Sintaxis

NET_API_STATUS NET_API_FUNCTION NetShareAdd(
  [in]  LMSTR   servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

Parámetros

[in] servername

Puntero a una cadena que especifica el nombre DNS o NetBIOS del servidor remoto en el que se va a ejecutar la función. Si este parámetro es NULL, se usa el equipo local.

[in] level

Especifica el nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
2
Especifica información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, y el número de conexiones. El parámetro buf apunta a una estructura SHARE_INFO_2 .
502
Especifica información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, el número de conexiones y otra información pertinente. El parámetro buf apunta a una estructura SHARE_INFO_502 .
503
Especifica información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, el número de conexiones y otra información pertinente. El parámetro buf apunta a una estructura SHARE_INFO_503 .

[in] buf

Puntero al búfer que especifica los datos. El formato de estos datos depende del valor del parámetro level . Para obtener más información, consulte Búferes de funciones de administración de red.

[out] parm_err

Puntero a un valor que recibe el índice del primer miembro de la estructura de información del recurso compartido que provoca el error ERROR_INVALID_PARAMETER . Si este parámetro es NULL, el índice no se devuelve en caso de error. Para obtener más información, consulte la función NetShareSetInfo .

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es NERR_Success.

Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El usuario no tiene acceso a la información pedida.
ERROR_INVALID_LEVEL
El valor especificado para el parámetro level no es válido.
ERROR_INVALID_NAME
El nombre del sistema de archivos o caracteres no es válido.
ERROR_INVALID_PARAMETER
El parámetro especificado no es válido.
NERR_DuplicateShare
El nombre del recurso compartido ya está en uso en este servidor.
NERR_RedirectedPath
La operación no es válida para un recurso redirigido. El nombre de dispositivo especificado se asigna a un recurso compartido.
NERR_UnknownDevDir
El dispositivo o directorio no existe.

Comentarios

Esta función solo se aplica a los recursos compartidos del bloque de mensajes del servidor (SMB). Para otros tipos de recursos compartidos, como sistemas de archivos distribuidos (DFS) o recursos compartidos de WebDAV, use funciones de Redes de Windows (WNet), que admiten todos los tipos de recursos compartidos.

Solo los miembros del grupo local Administradores, Operadores del sistema o Usuarios avanzados pueden agregar recursos compartidos de archivos con una llamada a la función NetShareAdd . El operador print puede agregar recursos compartidos de impresora.

Si está programando para Active Directory, puede llamar a determinados métodos de interfaz de servicio de Active Directory (ADSI) para lograr la misma funcionalidad que puede lograr llamando a las funciones de recurso compartido de administración de red. Para obtener más información, vea IADsFileShare.

Si se especifica 503 para el parámetro level , el servidor remoto especificado en el miembro shi503_servername de la estructura SHARE_INFO_503 debe haberse enlazado a un protocolo de transporte mediante la función NetServerTransportAddEx . En la llamada a NetServerTransportAddEx, se debe haber especificado 2 o 3 para el parámetro level y la marca SVTI2_SCOPED_NAME debe haberse especificado en la estructura SERVER_TRANSPORT_INFO_2 para el protocolo de transporte.

Ejemplos

En el ejemplo de código siguiente se muestra cómo compartir un recurso de red mediante una llamada a la función NetShareAdd . El ejemplo de código rellena los miembros de la estructura SHARE_INFO_2 y llama a NetShareAdd, especificando el nivel de información 2. No se requiere una contraseña porque estas plataformas no admiten la seguridad de nivel de recurso compartido.

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")

void wmain( int argc, TCHAR *argv[ ])
{
   NET_API_STATUS res;
   SHARE_INFO_2 p;
   DWORD parm_err = 0;

   if(argc<2)
      printf("Usage: NetShareAdd server\n");
   else
   {
      //
      // Fill in the SHARE_INFO_2 structure.
      //
      p.shi2_netname = TEXT("TESTSHARE");    
      p.shi2_type = STYPE_DISKTREE; // disk drive
      p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
      p.shi2_permissions = 0;    
      p.shi2_max_uses = 4;
      p.shi2_current_uses = 0;    
      p.shi2_path = TEXT("C:\\");
      p.shi2_passwd = NULL; // no password
      //
      // Call the NetShareAdd function,
      //  specifying level 2.
      //
      res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
      //
      // If the call succeeds, inform the user.
      //
      if(res==0)
         printf("Share created.\n");
      
      // Otherwise, print an error,
      //  and identify the parameter in error.
      //
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);
   }
   return;
}

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado lmshare.h (include Lm.h)
Library Netapi32.lib
Archivo DLL Netapi32.dll

Consulte también

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

Funciones de administración de redes

Introducción a la administración de redes

Funciones de recurso compartido de red

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503