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

Respuestas a la pregunta(2)

Su respuesta a la pregunta