AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

From C to delphi

Ein Thema von mohfa · begonnen am 4. Okt 2009 · letzter Beitrag vom 17. Okt 2009
Antwort Antwort
mohfa

Registriert seit: 11. Feb 2007
97 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: From C to delphi

  Alt 17. Okt 2009, 11:24
Hi i Did the conversion But i get an Exception please see the attachment :


The Delphi Code :
Delphi-Quellcode:
function ScannerWorker(Context:PSCANNER_THREAD_CONTEXT): DWORD;

var
notification: PSCANNER_NOTIFICATION;
replyMessage: SCANNER_REPLY_MESSAGE;
msg: PSCANNER_MESSAGE;
pOvlp:POVERLAPPED;
bResult: BOOL;
outSize: DWORD;
hr: HRESULT;
key: DWORD;

begin

While True Do
    begin
   bResult := GetQueuedCompletionStatus(Context^.Completion,OutSize,Key,pOvlp,INFINITE);
  
    Msg := PSCANNER_MESSAGE(@PSCANNER_MESSAGE(pOvlp)^.Ovlp);
    If Not(bResult) Then
      begin
      HR := HRESULT_FROM_WIN32(GetLastError());
      Break;
    end;

    WriteLN(Format('Received message: %d',[pOvlp.InternalHigh]));
    notification := @msg.Notification;
    assert(notification.BytesToScan<=SCANNER_READ_BUFFER_SIZE);
   // result := ScanBuffer( notification^.Contents, notification.BytesToScan );
     replyMessage.ReplyHeader.Status:= 0;
    replyMessage.ReplyHeader.MessageId:= msg.MessageHeader.MessageId;

    replyMessage.Reply.SafeToOpen:=not bResult;

    
   WriteLN(Format('Replying message, SafeToOpen: %d',[ReplyMessage.Reply.SafeToOpen]));

    HR := FilterReplyMessage(Context^.Port,PFILTER_REPLY_HEADER(@ReplyMessage),SizeOf(ReplyMessage));
    If SUCCEEDED(HR) Then
      begin
      WriteLN('Replied message');
    end
    Else
      begin
WriteLN(('Scanner: Error replying message. Error = 0x'+inttoHex(HR,2)));//[b]EXCEPTION:0x800703E6[/b]
      Break;
    end;
   FillChar(Msg^.FOverlapped,0,SizeOf(OVERLAPPED));
    //#define FIELD_OFFSET(t, f) ((unsigned int)(unsigned long)&(((t *)0)->f))
  

    HR := FilterGetMessage(Context^.Port,@Msg^.MessageHeader,DWORD(@PSCANNER_MESSAGE(0)^.FOverlapped),@Msg^.FOverlapped);
    If HR <> HRESULT_FROM_WIN32(ERROR_IO_PENDING) Then Break;
  end;
  If Not(SUCCEEDED(HR)) Then
    begin
    If HR = HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE) Then
      begin
      WriteLN('Scanner: Port is disconnected, probably due to scanner filter unloading.');
    end
    Else
      begin
      WriteLN(Format('Scanner: Unknown error occured. Error = 0x%x',<hr>));
    end;
  end;
  FreeMem(Msg);
  Result := HR;


end;
Where's the Error PLease ..?
Angehängte Grafiken
Dateityp: jpg err_176.jpg (29,7 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz