2008-11-26 3 views

Antwort

8

OpenFile ist eine 16-Bit-Abwärtskompatibilität von Windows. CreateFile ist die Funktion zum Öffnen von Dateien.

6

Wenn die Funktion erfolgreich ist, dann ist HFILE eine Datei HANDLE. Wenn nicht, dann ist es eine HFILE_ERROR-Konstante (vermutlich -1). Der Punkt ist, dass es bei einem Fehler kein HANDLE sein kann, also geben sie etwas zurück, das entweder ein HANDLE oder ein Fehlerwert sein kann.

Siehe @ Barry Vorschlag auch.

1

Das OpenFile gibt ein Dateihandle zurück, falls erfolgreich, oder ein HFILE_ERROR, falls es fehlschlägt.

3

Um Ihre Frage zu beantworten, ist HANDLE nur eine vorzeichenlose 32-Bit-Nummer, die als PVOID definiert ist. Es ist ein generisches Handle. HFILE ist ein spezielles Handle, obwohl es als 32-Bit-Zahl mit Vorzeichen definiert ist, um den Wert -1 erhalten zu können.
Es gibt andere spezialisierte Handles, wie HACCEL, HBITMAP, HINSTANCE usw., alle definiert als eine Abhängigkeit zu HANDLE.

2

Vor Jahren, HANDLES waren 16-Bit int s. Alle Handles überall in Windows waren HANDLES. Dann erkannte jemand, dass eine Datei HANDLE war nicht ganz die gleiche Sache wie ein Fenster HANDLE, und wenn sie anders definiert wurden, wie HFILE und HWND, dann vielleicht Entwickler würden sie nicht versehentlich so viel austauschen. (Sie waren jedoch beide typedef 'ed to int).

Noch später jemand erkannte, dass, wenn sie vollständig defferently definiert wurden ... sagen wie:

typedef struct _hfile {} * HFILE; 
typedef struct _hwnd {} * HWND; 

dann der Compiler selbst würde sich beschweren, wenn Sie eine anstelle der anderen verwendet werden, auch wenn in der Realität , jeder war nur ein einfacher alter 16-Bit (schließlich 32-Bit) int Wert.

Verwandte Themen