Perl Win32 :: API y punteros
Estoy tratando de utilizar la función de API Win32 DsGetSiteName () usando el módulo Win32 :: API de Perl. Según el SDK de Windows, el prototipo de la función para DsGetSiteName es:
DWORD DsGetSiteName(LPCTSTR ComputerName, LPTSTR *SiteName)
Escribí con éxito una pequeña función de C ++ usando esta API para comprender mejor cómo funcionaría realmente (estoy aprendiendo C ++ por mi cuenta, pero estoy divagando).
De todos modos, desde mi comprensión de la documentación de la API, se supone que el segundo parámetro es un puntero a una variable que recibe un puntero a una cadena. En mi código C ++, escribí eso como:
LPSTR site;
LPTSTR *psite = &site;
y he llamado exitosamente a la API usando el puntero psite.
Ahora mi pregunta es, ¿hay alguna manera de hacer lo mismo usando Perl's Win32 :: API? He intentado el siguiente código Perl:
my $site = " " x 256;
my $computer = "devwin7";
my $DsFunc = Win32::API->new("netapi32","DWORD DsGetSiteNameA(LPCTSTR computer, LPTSTR site)");
my $DsResult = $DsFunc->Call($computer, $site);
print $site;
y el resultado de la llamada en $ DsResult es cero (lo que significa éxito), pero los datos en $ site no son lo que quiero, parece ser una mezcla de caracteres ASCII y no imprimibles.
¿Podría la variable $ site contener la dirección del puntero de la cadena asignada? Y si es así, ¿hay alguna manera de usar Win32 :: API para desreferenciar esa dirección para llegar a la cadena?
Gracias por adelantado