Código C:
Ver originalfilename = (*conv)[indice].filename;
pathname = (*conv)[indice].pathname;
protocol = (*conv)[indice].protocol;
Estas no son asignaciones de contenido, solo estás copiando la dirreción del puntero WCHAR. Eso puede ser peligroso (si eliminas el vector y despues intentas usar ese puntero).