eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingBezpieczne przekazywanie ciągów znaków › Re: Bezpieczne przekazywanie ciągów znaków
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: "\"Marsjanin\"" <z...@g...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Bezpieczne przekazywanie ciągów znaków
    Date: Tue, 23 Feb 2010 19:53:07 +0100
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 38
    Message-ID: <hm187v$d75$1@inews.gazeta.pl>
    References: <hkv3ln$h6k$1@news.onet.pl>
    NNTP-Posting-Host: chello089079131109.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1266951232 13541 89.79.131.109 (23 Feb 2010 18:53:52 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Tue, 23 Feb 2010 18:53:52 +0000 (UTC)
    X-Antivirus-Status: Clean
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
    X-Priority: 3
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
    X-User: ziemianp
    X-Antivirus: avast! (VPS 100223-1, 2010-02-23), Outbound message
    X-MSMail-Priority: Normal
    Xref: news-archive.icm.edu.pl pl.comp.programming:185081
    [ ukryj nagłówki ]

    Ja taką współpracę (program <-> DLL) zrealizowałem kiedyś następująco:

    void* Init(...); // wołane raz przy inicjalizacji (rejestracja pluginu)
    __int32 DoSomenthing(void *handle,TCHAR *Bufor,unsigned __int32
    *SizeOfBufor);
    __int32 Free(void *handle); // wołane raz przy zwalnianiu zasobów
    (wyrejestrowanie pluginu)

    Komunikacja z DoSomething wyglądała następująco:
    <CODE>
    unsigned __int32 buforSize = 0;
    __int32 error = DoSomenthing(handle,NULL,&buforSize);
    if (error >= _OK) {
    TCHAR *wynik = new TCHAR[buforSize];
    if (wynik) {
    error = DoSomenthing(handle,wynik,&buforSize);
    if (error >= _OK) {
    // obsługa wyniku
    }
    else AddError(error,TEXT("DoSomenthing(...)"));
    delete[] wynik;
    }
    }
    else AddError(error,TEXT("DoSomenthing(NULL)"));

    </CODE>

    Wewnątrz funkcji DoSomenthing "pracochłonne rzeczy" wykonywałem tylko gdy
    wywołanie było z NULL'em. Wówczas czyściłem wewnętrzne struktury (ukryte pod
    wskaźnikiem "handle") i zapamiętywałem tam bieżące wyniki.
    Wywołanie z podanym wskaźnikiem "wynik" i rozmiarem bufora kopiowało tylko
    dane ze struktur wewnętrznych do bufora użytkownika.
    Problemu z wątkami nie miałem, bo każdy wątek musiał wykonać swoje "Init" i
    "Free".

    Pozdrawiam,
    Piotr

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: