请教上面这个函数什么地方内存泄漏了

请问下面这个函数什么地方内存泄漏了?

function ProcedureIsExists(AppName:string):Boolean;     //判断一个程序是否已经运行
var
    lppe: TProcessEntry32;
    ssHandle: THandle;
    AppFound,findqq:   Boolean;
    Wnd:   HWND;
begin
    Result := False;
    ssHandle   :=   CreateToolHelp32SnapShot(TH32CS_SNAPALL,   0);
    lppe.dwSize   :=   SizeOf(lppe);
    AppFound   :=   Process32First(sshandle,   lppe);
    while AppFound   do
    begin
      //其中lppe.szExefile就是程序名**********************************************
      if UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AppName)   then
      begin
          Result := True;
          Exit;
      end;
      AppFound := Process32Next(ssHandle,lppe);
    end;
end;


我在一个线程里调用这个函数,结果导致程序的错误页面不断增加,把测试机的内存全部耗完了,不知道是这个函数里的什么地方导致的,请大家帮我看看,谢谢
------解决方案--------------------
CloseToolhelp32Snapshot

------解决方案--------------------
function ProcedureIsExists(AppName:string):Boolean;stdcall;//加上这个试试。
还有就是检查下调用是否有死循环,及哪些对象要释放。说明一下。有几个函数我也不知道什么意思,不对莫怪哈。
------解决方案--------------------
在退出这个函数前加上一个CloseHandle(ssHandl);试试。