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 |
---|---|
|
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 . |
|
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 . |
|
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 |
---|---|
|
El usuario no tiene acceso a la información pedida. |
|
El valor especificado para el parámetro level no es válido. |
|
El nombre del sistema de archivos o caracteres no es válido. |
|
El parámetro especificado no es válido. |
|
El nombre del recurso compartido ya está en uso en este servidor. |
|
La operación no es válida para un recurso redirigido. El nombre de dispositivo especificado se asigna a un recurso compartido. |
|
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
Funciones de administración de redes
Introducción a la administración de redes