2011-01-08 12 views

Respuesta

2

De acuerdo con Win32.hlp, la API proporciona la función BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation) en KERNEL32. LPBY_HANDLE_FILE_INFORMATION es una BY_HANDLE_FILE_INFORMATION*, donde BY_HANDLE_FILE_INFORMATION es el siguiente:

typedef struct _BY_HANDLE_FILE_INFORMATION { // bhfi 
    DWORD dwFileAttributes; 
    FILETIME ftCreationTime; 
    FILETIME ftLastAccessTime; 
    FILETIME ftLastWriteTime; 
    DWORD dwVolumeSerialNumber; 
    DWORD nFileSizeHigh; 
    DWORD nFileSizeLow; 
    DWORD nNumberOfLinks; 
    DWORD nFileIndexHigh; 
    DWORD nFileIndexLow; 
} BY_HANDLE_FILE_INFORMATION; 

después de llamar a dicha función, si se devuelve verdadero, el BY_HANDLE_FILE_INFORMATION contiene los datos pertinentes a su archivo. dwFileAttributes puede contener la bandera FILE_ATTRIBUTE_READ_ONLY.

Si quieres más que eso, también hay:

BOOL GetKernelObjectSecurity(
HANDLE Handle,        // handle of object to query 
SECURITY_INFORMATION RequestedInformation, // requested information 
PSECURITY_DESCRIPTOR pSecurityDescriptor, // address of security descriptor 
DWORD nLength,        // size of buffer for security descriptor 
LPDWORD lpnLengthNeeded     // address of required size of buffer 
); 

La referencia de la API es necesariamente vaga en lo que un SECURITY_DESCRIPTOR es, pero se puede llamar a un montón de otras funciones utilizando su dirección como un parámetro para obtener propiedades específicas. El SECURITY_INFORMATION es solo una constante DWORD que especifica a cuál de estas funciones planea llamar. Puede encontrar más información en http://msdn.microsoft.com/en-us/library/aa446641%28VS.85%29.aspx

Edición - la segunda sección de códigos sigue saliendo como un desastre, pero el enlace a la referencia API lo llevará a donde necesita ir si busca un poco.

Cuestiones relacionadas