2008-11-26 11 views

Respuesta

8

OpenFile es una función de compatibilidad hacia atrás de Windows de 16 bits. CreateFile es la función para abrir archivos.

6

Si la función tiene éxito, HFILE es un archivo HANDLE. Si no, entonces es una constante HFILE_ERROR (presumiblemente -1). El punto es que no puede ser una MANIJA en caso de error, por lo que devuelven algo que puede ser una MANIJA o un valor de error.

Consulte la sugerencia de @Barry también.

1

El archivo OpenFile devuelve un identificador de archivo en caso de éxito o un HFILE_ERROR si falla.

3

Para responder a su pregunta, HANDLE es simplemente un número de 32 bits sin signo definido como PVOID. Es un mango genérico. HFILE es un identificador especializado, aunque se define como un número de 32 bits firmado para poder obtener el valor -1.
Hay otros identificadores especializados, como HACCEL, HBITMAP, HINSTANCE, etc., todos definidos como una dependencia de HANDLE.

2

Hace años, HANDLES eran de 16 bits int s. Todos los identificadores en todas partes en Windows fueron HANDLES. Entonces alguien se dio cuenta de que un archivo HANDLE no era exactamente lo mismo que una ventana HANDLE, y si se definían de manera diferente, por ejemplo como HFILE y HWND, entonces tal vez los desarrolladores no los intercambiarían accidentalmente. (Sin embargo, ambos fueron typedef 'ed a int).

Más tarde, alguien se dio cuenta de que si se definieron por completo defferently ... decir que:

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

entonces el propio compilador se quejaban si utilizó uno en lugar del otro, aunque, en realidad, , cada uno era simplemente un viejo valor de 16 bits (eventualmente 32 bits) int.

Cuestiones relacionadas