Perl Win32 :: API e ponteiros

Estou tentando utilizar a função DsGetSiteName () da API do Win32 usando o módulo Win32 :: API do Perl. De acordo com o Windows SDK, o protótipo da função para DsGetSiteName é:

DWORD DsGetSiteName(LPCTSTR ComputerName, LPTSTR *SiteName)

Escrevi com êxito uma pequena função C ++ usando essa API para entender melhor como ela realmente funcionaria (estou aprendendo C ++ por conta própria, mas discordo

De qualquer forma, do meu entendimento da documentação da API, o segundo parâmetro deve ser um ponteiro para uma variável que recebe um ponteiro para uma string. No meu código C ++, escrevi isso como:

LPSTR site;
LPTSTR *psite = &site;

e chamaram a API com sucesso usando o ponteiro psite.

Agora, minha pergunta é: existe uma maneira de fazer o mesmo usando o Win32 :: API do Perl? Eu tentei o seguinte 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;

e o resultado da chamada em $ DsResult é zero (significando sucesso), mas os dados em $ site não são o que eu quero, parece ser uma mistura de caracteres ASCII e não imprimíveis.

A variável $ site poderia conter o endereço do ponteiro da string alocada? E, em caso afirmativo, existe uma maneira de usar o Win32 :: API para desreferenciar esse endereço para obter a string?

Desde já, obrigado

questionAnswers(2)

yourAnswerToTheQuestion