22. december 2004 - 12:01Der er
3 kommentarer og 1 løsning
IFilter cleanup
Jeg har lidt problemer med at bruge IFilter komponenten i Windows.
Når man har loaded sit filter (LoadIFilter) og løbet al teksten igennem, kan jeg ikke finde nogen måde at frigive filen igen. Der er en release funktion på IUnknown interfacet, men der ser ikke ud til at ske noget ved at kalde den.
Jeg prøver at slette filen fra mit program efter at have lavet et IFilter på den, og det fejler da filen er låst. Der må være en filehandle inde i maven på et IFilter som skal lukkes eller noget?
Hvis jeg kører denne kode, kan jeg godt slette filen EFTER jeg har kaldt Release. Prøv evt. at se hvad Release returnerer, det er nemlig det antal referencer der er til objektet og skal være 0 (nul) før objektet frigives.
IFilter* Filter=NULL; HRESULT hr = LoadIFilter(L"c:\\a.doc", NULL, (void**)&Filter); ULONG pdwFlags; hr = Filter->Init(IFILTER_INIT_INDEXING_ONLY, 0, NULL, &pdwFlags); // Her kan jeg IKKE slette a.doc ULONG count = Filter->Release(); // Her KAN jeg slette a.doc
Yep, jeg har lidt røde øre nu, for jeg kan faktisk også... Jeg fik bare lige lavet en rigtig sjuske-fejl, men nu kører det.
Kender du i øvrigt en masse til IFilter? Jeg har haft rigtig store problemer med at finde noget dokumentation og nogle eksempler der kunne sætte mig i gang. Det er ikke nemt når det eneste man har, er navnet "IFilter"...
Desværre kender jeg intet til IFilter-komponenten, jeg lavede kun eksemplet p.g.a. dit spørgsmål... Og du har ganske ret - der er ikke megen information om emnet!
Hvis der er noget specifikt du er i tvivl om, kan du da prøve at poste det her, så skal jeg se om jeg kan hjælpe.
Du får pointene, og så må jeg jo oprette nye spørgsmål hvis jeg finder på noget konkret at spørge om :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.