Hello, j'ai un gros problème avec l'utilisation de l'API "DhcpGetClientInfo". Des fois ça marche, des fois pas!!!



Le code suivant fonctionne très bien, par contre quand je décommente "// t_DhcpSetClientInfo _DhcpSetClientInfo=NULL;", DhcpGetClientInfo retrourne une erreur 1781 "RPC_X_ENUM_VALUE_OUT_OF_RANGE" ???
Ou mieux si je rajoute une variable avant/après DhcpSetClientInfo, même erreur. Comprend pas... Please help me.



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
#include "dhcpsapi.h"
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
typedef DWORD DHCP_API_FUNCTION (*t_DhcpGetClientInfo)(
  LPWSTR ServerIpAddress,
  DHCP_SEARCH_INFO* SearchInfo,
  LPDHCP_CLIENT_INFO *ClientInfo
);
typedef VOID DHCP_API_FUNCTION (*t_DhcpRpcFreeMemory)(
    PVOID BufferPointer
    );
typedef DWORD DHCP_API_FUNCTION (*t_DhcpSetClientInfo)(
    DHCP_CONST WCHAR *ServerIpAddress,
    DHCP_CONST DHCP_CLIENT_INFO *ClientInfo
    );
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  int a;
 
  t_DhcpGetClientInfo _DhcpGetClientInfo;
  t_DhcpRpcFreeMemory _DhcpRpcFreeMemory;
 
  HMODULE hMod=LoadLibrary("c:\\windows\\system32\\dhcpsapi.dll");
  DHCP_SEARCH_INFO SearchInfo;
  SearchInfo.SearchType=2;
  SearchInfo.SearchInfo.ClientName=L"fab.";
 
  _DhcpGetClientInfo=(t_DhcpGetClientInfo)GetProcAddress(hMod,"DhcpGetClientInfo");
  _DhcpRpcFreeMemory=(t_DhcpRpcFreeMemory)GetProcAddress(hMod,"DhcpRpcFreeMemory");
 
  DHCP_CLIENT_INFO* info;
 
  a=_DhcpGetClientInfo(L"10.77.1.254",&SearchInfo,&info);
  _DhcpRpcFreeMemory(info);
 
 // t_DhcpSetClientInfo _DhcpSetClientInfo=NULL;
  FreeLibrary(hMod);
        return 0;