hallo!
ich habe eine funktion geschrieben, die (in einem thread) prüft, welche
comports (ob ein comport...) am system vorhanden sind:
Delphi-Quellcode:
function TConThread.getPrt(Port: String): Boolean;
var
ComFile : THandle;
DeviceName : array [0..10] of Char;
begin
StrPCopy(DeviceName, Port);
try
ComFile := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
Result := ComFile <> INVALID_HANDLE_VALUE;
if NOT (ComFile = INVALID_HANDLE_VALUE) then
begin
CloseHandle(ComFile);
end;
except
MessageDlg(IntToStr(GetLastError)+':hnd', mtError, [mbOK], 0);
end;
end;
die portnamen werden im format '\\.\COMxx' übergeben.
wenn ich nun ein usb-gerät anstecke, dass intern als
com port gehandelt wird,
so habe ich das problem, dasss mir dieses gerät einmal erkannt wird, einmal nicht
(ich also einen
handle darauf bekomme).
ich kann es manchmal 10x an und abstecken, und es wird immer sauber erkannt,
manchmal nur einmal usw...
meine frage ist nun:
an was kann das liegen?
das gerät wird im gerätemanager von windows (=vista) immer korrekt angezeigt.
hat jemand eine idee? bin für jeden hinweis dankbar
gruss
peter