Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/09/2013, 14:24
EL_DOC
 
Fecha de Ingreso: junio-2008
Mensajes: 109
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Problema al leer un vector puntero

Este tema está relacionado a un problema de un tema anterior que publique pero ahora consiste en leer datos de un vector puntero el problema radica que estoy usando C# y desde ahí importo las bibliotecas que he creado de C++ y por tanto no puedo depurar del lado de C++ bien tengo la estructura siguiente:

Código C++:
Ver original
  1. struct NetxInfo
  2. {
  3. public:
  4.     ULONG pid;
  5.     WCHAR filename[MAX_PATH];
  6.     WCHAR pathname[MAX_PATH];
  7.  
  8.     WCHAR protocol[10];
  9.     WCHAR state[MAX_PATH];
  10.     WCHAR srcip[MAX_PATH];
  11.     DWORD srcport;
  12.     WCHAR destip[MAX_PATH];
  13.     DWORD destport;
  14. };

y tengo mi función donde creo un vector puntero y le asigno valores:

Código C++:
Ver original
  1. vector<NetxInfo>* initialNetxes = new vector<NetxInfo>();
  2.    
  3.     NetxInfo val;
  4.                    
  5.     val.pid = 112;
  6.     CopyString(L"explorer.exe", val.filename, MAX_PATH);
  7.     CopyString(L"C:/Windows", val.pathname, MAX_PATH);
  8.     CopyString(L"UDP", val.protocol, MAX_PATH);
  9.     CopyString(L"SYN", val.state, MAX_PATH);
  10.     CopyString(L"192.168.1.001", val.srcip, MAX_PATH);
  11.     val.srcport = 444;
  12.     CopyString(L"192.168.002", val.destip, MAX_PATH);
  13.     val.destport = 6060;
  14.  
  15.     initialNetxes->push_back(val);
  16.            
  17.     val.pid = 113;
  18.     CopyString(L"schost.exe", val.filename, MAX_PATH);
  19.     CopyString(L"C:/windows", val.pathname, MAX_PATH);
  20.     CopyString(L"TCP", val.protocol, MAX_PATH);
  21.     CopyString(L"Waiting", val.state, MAX_PATH);
  22.     CopyString(L"192.168.1.004", val.srcip, MAX_PATH);
  23.     val.srcport = 425;
  24.     CopyString(L"192.168.1.005", val.destip, MAX_PATH);
  25.     val.destport = 1212;
  26.  
  27.     initialNetxes->push_back(val);


todo esto va bien el problema se está dando en la función donde intento leer los valores del vector puntero y lo hago de la siguiente forma:

Código C++:
Ver original
  1. vector<NetxInfo>* conv = (vector<NetxInfo>*) source;
  2.  
  3.         pid = (*conv)[indice].pid;
  4.         filename = (*conv)[indice].filename;
  5.         pathname = (*conv)[indice].pathname;
  6.         protocol = (*conv)[indice].protocol;
  7.         state = (*conv)[indice].state;
  8.         srcip = (*conv)[indice].srcip;
  9.         srcport = (*conv)[indice].srcport;
  10.         destip = (*conv)[indice].destip;
  11.         destport = (*conv)[indice].destport;

nota: indice es un parámetro de la función que hace este proceso y le envío el indice del vector que quiero recuperar.

Espero puedan ayudarme.

Última edición por EL_DOC; 04/09/2013 a las 14:33