NetShareAdd-Funktion (lmshare.h)
Gibt eine Serverressource gemeinsam.
Syntax
NET_API_STATUS NET_API_FUNCTION NetShareAdd(
[in] LMSTR servername,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
Parameter
[in] servername
Zeiger auf eine Zeichenfolge, die den DNS- oder NetBIOS-Namen des Remoteservers angibt, auf dem die Funktion ausgeführt werden soll. Wenn dieser Parameter NULL ist, wird der lokale Computer verwendet.
[in] level
Gibt die Informationsebene der Daten an. Dieser Parameter kann einen der folgenden Werte annehmen.
Wert | Bedeutung |
---|---|
|
Gibt Informationen zur freigegebenen Ressource an, einschließlich des Namens der Ressource, des Typs und der Berechtigungen sowie der Anzahl der Verbindungen. Der buf-Parameter verweist auf eine SHARE_INFO_2 Struktur. |
|
Gibt Informationen zur freigegebenen Ressource an, einschließlich des Namens der Ressource, des Typs und der Berechtigungen, der Anzahl der Verbindungen und anderer relevanter Informationen. Der buf-Parameter verweist auf eine SHARE_INFO_502-Struktur . |
|
Gibt Informationen zur freigegebenen Ressource an, einschließlich des Namens der Ressource, des Typs und der Berechtigungen, der Anzahl der Verbindungen und anderer relevanter Informationen. Der buf-Parameter verweist auf eine SHARE_INFO_503-Struktur . |
[in] buf
Zeiger auf den Puffer, der die Daten angibt. Das Format dieser Daten hängt vom Wert des Ebenenparameters ab. Weitere Informationen finden Sie unter Netzwerkverwaltungsfunktionspuffer.
[out] parm_err
Zeiger auf einen Wert, der den Index des ersten Members der Freigabeinformationsstruktur empfängt, der den ERROR_INVALID_PARAMETER Fehler verursacht. Wenn dieser Parameter NULL ist, wird der Index nicht bei einem Fehler zurückgegeben. Weitere Informationen finden Sie in der NetShareSetInfo-Funktion .
Rückgabewert
Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.
Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Fehlercodes sein.
Rückgabecode | Beschreibung |
---|---|
|
Der Benutzer besitzt keinen Zugriff auf die angeforderten Informationen. |
|
Der für den Levelparameter angegebene Wert ist ungültig. |
|
Der Zeichen- oder Dateisystemname ist ungültig. |
|
Der angegebene Parameter ist ungültig. |
|
Der Freigabename wird bereits auf diesem Server verwendet. |
|
Der Vorgang ist für eine umgeleitete Ressource ungültig. Der angegebene Gerätename wird einer freigegebenen Ressource zugewiesen. |
|
Das Gerät oder Verzeichnis ist nicht vorhanden. |
Hinweise
Diese Funktion gilt nur für SMB-Freigaben (Server Message Block). Verwenden Sie für andere Freigabetypen, z. B. verteiltes Dateisystem (DFS) oder WebDAV-Freigaben, Windows-Netzwerkfunktionen (WNet), die alle Arten von Freigaben unterstützen.
Nur Mitglieder der lokalen Gruppe Administratoren, Systemoperatoren oder Power Users können Dateifreigaben mit einem Aufruf der NetShareAdd-Funktion hinzufügen. Der Druckoperator kann Druckerfreigaben hinzufügen.
Wenn Sie für Active Directory programmieren, können Sie möglicherweise bestimmte ADSI-Methoden (Active Directory Service Interface) aufrufen, um dieselbe Funktionalität zu erzielen, die Sie durch aufrufen der Netzwerkverwaltungsfreigabefunktionen erreichen können. Weitere Informationen finden Sie unter IADsFileShare.
Wenn 503 für den Levelparameter angegeben wird, muss der im shi503_servername Member der SHARE_INFO_503-Struktur angegebene Remoteserver mithilfe der NetServerTransportAddEx-Funktion an ein Transportprotokoll gebunden worden sein. Beim Aufruf von NetServerTransportAddEx muss entweder 2 oder 3 für den Levelparameter angegeben worden sein, und das SVTI2_SCOPED_NAME-Flag muss in der SERVER_TRANSPORT_INFO_2-Struktur für das Transportprotokoll angegeben worden sein.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine Netzwerkressource mithilfe eines Aufrufs der NetShareAdd-Funktion freigeben. Das Codebeispiel füllt die Member der SHARE_INFO_2-Struktur aus und ruft NetShareAdd auf, wobei die Informationsebene 2 angegeben wird. Ein Kennwort ist nicht erforderlich, da diese Plattformen keine Sicherheit auf Freigabeebene unterstützen.
#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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | lmshare.h (lm.h einschließen) |
Bibliothek | Netapi32.lib |
DLL | Netapi32.dll |