Frage 2: Aufgerufen wird im Code
WNetOpenEnum
.
Meine Suche im Internet bringt mich aber immer zu
WNetOpenEnumA
bzw. zu
WNetOpenEnumW
.
In der
Winapi.Windows sind aber alle 3 Varianten aufgeführt.
Delphi-Quellcode:
function WNetOpenEnum(dwScope, dwType, dwUsage: DWORD;
lpNetResource: PNetResource; var lphEnum: THandle): DWORD; stdcall;
{$EXTERNALSYM WNetOpenEnumA}
function WNetOpenEnumA(dwScope, dwType, dwUsage: DWORD;
lpNetResource: PNetResourceA; var lphEnum: THandle): DWORD; stdcall;
{$EXTERNALSYM WNetOpenEnumW}
function WNetOpenEnumW(dwScope, dwType, dwUsage: DWORD;
lpNetResource: PNetResourceW; var lphEnum: THandle): DWORD; stdcall;
Ich nehmen mal an, dass die WNetOpenEnum (Ohne A oder W) intern auf eine der beiden gemappt wird. Welche wäre denn das?
Du zeigst uns nur die Definition (in Delphi 10.2 bspw. in Zeile 35137 ff.), aber das eigentliche statische importieren ist erst einige Zeilen später (38341):
Delphi-Quellcode:
function WNetOpenEnum; external mpr name 'WNetOpenEnumW';
function WNetOpenEnumA; external mpr name 'WNetOpenEnumA';
function WNetOpenEnumW; external mpr name 'WNetOpenEnumW';
Oder um deine Frage konkret zu beantworten: WNetOpenEnum mappt auf WNetOpenEnumW, also die WideString-Variante.
Wenn du das anderes möchtest, muss du explizit die Version mit A hinten aufrufen.