Bonjout tous,mon pb est le suivant :
j'ai suivit toutes les etapes necessaire afin de mettre en marche un programme qui permettre l'ajout d'un partage mais j'ai pas put localisée mon erreur je ponse qu'elle est au niveau de l'initialisateur de l'enregistrement _INFOS_SHARE_2
qui est utilisé par l'API NetShareAdd de la librairie netapi32.dll
le code en mode console est partagé ci dessous si vous avez des remarque envoyées les a mois merci.
le code :
**********************
#include <winsock2.h>
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <malloc.h>
#include <lmerr.h>
#include <conio.h>
#define STYPE_DISKTREE 0
#define STYPE_PRINTQ 1
#define STYPE_DEVICE 2
#define ACCESS_READ 0
#define MAX_USES -1
#define COURRANT_USES 0
typedef DWORD (__stdcall *NetShareAddNT_t)(
wchar_t *servername,
DWORD level,
byte **buf,
DWORD parm_err);
typedef struct _SHARE_INFO_2_NT {
wchar_t * shi2_netname;
DWORD shi2_type;
wchar_t * shi2_remark;
DWORD shi2_permissions;
DWORD shi2_max_uses;
DWORD shi2_current_uses;
wchar_t * shi2_path;
wchar_t * shi2_passwd;
} SHARE_INFO_2_NT, *PSHARE_INFO_2_NT, *LPSHARE_INFO_2_NT;
void main()
{
DWORD dwlevel=2,c=0,a=5;
PSHARE_INFO_2_NT buff,p;
buff = new (_SHARE_INFO_2_NT);
char str2[256];
strcpy(str2, "Essai");
WCHAR hst2[20];
MultiByteToWideChar( CP_ACP, 0, str2, strlen(str2)+1, hst2, sizeof(hst2)/sizeof(hst2[0]));
char str3[256];
strcpy(str3, "D:\DINE");
WCHAR hst3[20];
MultiByteToWideChar( CP_ACP, 0, str3, strlen(str3)+1, hst3, sizeof(hst3)/sizeof(hst3[0]));
//-----------------
buff->shi2_current_uses=COURRANT_USES;
buff->shi2_max_uses=MAX_USES;
buff->shi2_netname=hst2;
buff->shi2_path=hst3;
buff->shi2_permissions=ACCESS_READ;
buff->shi2_type=STYPE_DISKTREE;
printf("\ntype de partage :: %d",buff->shi2_type);
printf("\npermission :: %d",buff->shi2_permissions);
printf("\nmax users :: %d",buff->shi2_max_uses);
printf("\ncourranr users :: %d",buff->shi2_current_uses);
//printf("\nremarque :: %s",buff->shi2_remark);
//printf("\nmotpasse :: %s",buff->shi2_passwd);
printf("\nrepertoire de partage :: %s",buff->shi2_path);
printf("\nnom de partage ::%s",buff->shi2_netname);
p=buff;
//-----------------
DWORD res=NULL;
HINSTANCE hNet = 0;
hNet = LoadLibrary( "netapi32.dll" );
NetShareAddNT_t NetShareAddNT = 0;
NetShareAddNT = (NetShareAddNT_t) GetProcAddress( hNet, "NetShareAdd" );
if ( NetShareAddNT == 0 )
{
printf("erreur !!! \n");
}
char str1[256];
strcpy(str1, "\\\\");
strcat(str1, "172.167.0.39");
WCHAR hst1[20];
MultiByteToWideChar( CP_ACP, 0, str1, strlen(str1)+1, hst1, sizeof(hst1)/sizeof(hst1[0]));
res=NetShareAddNT(hst1,dwlevel,(LPBYTE *)&p,NULL);
//erreur type
if(res==ERROR_ACCESS_DENIED) printf("1\n");
if(res==ERROR_INVALID_LEVEL) printf("2\n");
if(res==ERROR_INVALID_NAME) printf("3\n");
if(res==ERROR_INVALID_PARAMETER) printf("4\n");
if(res==NERR_DuplicateShare) printf("5\n");
if(res==NERR_RedirectedPath) printf("6\n");
if(res==NERR_UnknownDevDir) printf("7\n");
else
printf("????????????");
getch();
}
**********************