--- source-HEAD\IconOverlayHook.pas Tue Jan 10 16:19:18 2006
+++ source\IconOverlayHook.pas Tue Jan 10 14:54:39 2006
@@ -140,6 +140,27 @@
Result := 'Hardlink';
end;
+function NtfsGetHardLinkInfoW(const FileName: WideString; var Info: TNtfsHardLinkInfo): Boolean;
+var
+ F: THandle;
+ FileInfo: TByHandleFileInformation;
+begin
+ Result := False;
+ F := CreateFileW(PWideChar(FileName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
+ if F <> INVALID_HANDLE_VALUE then
+ try
+ if GetFileInformationByHandle(F, FileInfo) then
+ begin
+ Info.LinkCount := FileInfo.nNumberOfLinks;
+ Info.FileIndexHigh := FileInfo.nFileIndexHigh;
+ Info.FileIndexLow := FileInfo.nFileIndexLow;
+ Result := True;
+ end;
+ finally
+ CloseHandle(F);
+ end
+end;
+
function THardlinkOverlayHook.IsMemberOf(pwszPath: PWideChar;
dwAttrib: DWORD): HResult;
var
@@ -154,7 +175,7 @@
try
// Retrieve file information, and look if there are links existing; if no,
// than this file is *not* a link, and we skip
- if NtfsGetHardLinkInfo(pwszPath, LinkInfo) then
+ if NtfsGetHardLinkInfoW(pwszPath, LinkInfo) then
if LinkInfo.LinkCount > 1 then
Result := S_OK;
except