Und Exceptions gibt es hier standardmäßig auch keine.
Darum wird bei solchen Funktionen auch gern auf einen Ressourcenschutzblock verzichtet. (Try-Finally)
Willst du wirklich Gründe für das nichtfunktionieren wissen, muß due die Results und GetLastError bei den WinAPIs (CreateFile und CloseHandle) auswerten.
Da wäre dann auch aufgefallen, wenn die Hälfte vom Wert "INVALID_HANDLE_VALUE" aka
HANDLE(-1) fehlt.
Windows
HANDLE = Delphi THandle