Autor
|
Tema: Función GetFileInformationByHandle (Leído 2,644 veces)
|
el_doctor
Desconectado
Mensajes: 57
|
puedo usar la función GetFileInformationByHandle para obtener el espacio usado por un archivo especifico HANDLE hFile en la documentación de oficial de Microsoft el puntero que retorna de BY_HANDLE_FILE_INFORMATION no hay una propiedad igual que en FILE_STANDARD_INFO -> AllocationSize que es el valor que necesito y la cuestión es que esta función la quiero ejecutar en Windows XP por eso no puedo usar GetFileInformationByHandleEx es posible usar GetFileInformationByHandle y obtener el mismo valor?
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
puedo usar la función GetFileInformationByHandle para obtener el espacio usado por un archivo especifico HANDLE hFile en la documentación de oficial de Microsoft el puntero que retorna de BY_HANDLE_FILE_INFORMATION no hay una propiedad igual que en FILE_STANDARD_INFO -> AllocationSize que es el valor que necesito y la cuestión es que esta función la quiero ejecutar en Windows XP por eso no puedo usar GetFileInformationByHandleEx es posible usar GetFileInformationByHandle y obtener el mismo valor?
Utiliza NtQueryInformationFile + FileStandardInformation. typedef struct _FILE_STANDARD_INFORMATION { LARGE_INTEGER AllocationSize; LARGE_INTEGER EndOfFile; ULONG NumberOfLinks; UCHAR DeletePending; UCHAR Directory; } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
|
|
|
En línea
|
|
|
|
el_doctor
Desconectado
Mensajes: 57
|
Usando GetProcAddress?
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Usando GetProcAddress?
No hay necesidad, podes importarla normalmente, vas a necesitar la ntdll.lib que podes encontrar en el WDK luego: propiedades -> linker -> input -> escribes el nombre. Bueno eso es para Visual studio que es el mejor para gente que esta programando para Windows.
|
|
|
En línea
|
|
|
|
el_doctor
Desconectado
Mensajes: 57
|
pues no tengo claro como hacer la implementacion mi método que tengo que falla en en win xp es el siguiente: DWORD GetFileSize(HANDLE hFile) {
DWORD dwFileSizeHi = 0; DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);
if(dwFileSizeLo == INVALID_FILE_SIZE ) { FILE_STANDARD_INFO finfo;
ZeroMemory(&finfo,sizeof(finfo));
GetFileInformationByHandleEx(hFile,FileStandardInfo, &finfo, sizeof(finfo));
dwFileSizeLo = finfo.AllocationSize.LowPart; } return dwFileSizeLo; }
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿Te fijaste ya que devolvia GetLastError?
Note that if the return value is INVALID_FILE_SIZE (0xffffffff), an application must call GetLastError to determine whether the function has succeeded or failed. The reason the function may appear to fail when it has not is that lpFileSizeHigh could be non-NULL or the file size could be 0xffffffff.
¿Y si usas directamente GetFileSizeEx? Esta disponible en XP.
PD. El tamaño del archivo se corresponde con el EndofFile y no con el AllocationSize (eso corresponde con el tamaño que ocupa en disco, es decir redondeado en clusters).
|
|
« Última modificación: 28 Noviembre 2014, 19:24 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
pues no tengo claro como hacer la implementacion mi método que tengo que falla en en win xp es el siguiente: DWORD GetFileSize(HANDLE hFile) {
DWORD dwFileSizeHi = 0; DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);
if(dwFileSizeLo == INVALID_FILE_SIZE ) { FILE_STANDARD_INFO finfo;
ZeroMemory(&finfo,sizeof(finfo));
GetFileInformationByHandleEx(hFile,FileStandardInfo, &finfo, sizeof(finfo));
dwFileSizeLo = finfo.AllocationSize.LowPart; } return dwFileSizeLo; }
Sí y viendo el código porqué razon necesitas el valor en AllocationSize? Ya que si primero utilizas GetFileSize y luego sobreescribes el valor retornado por GetFileInformationByHandleEx en la misma variable... En XP falla ya que GetFileInformationByHandleEx no es exportada.
|
|
|
En línea
|
|
|
|
el_doctor
Desconectado
Mensajes: 57
|
muy agradecido al final use GetFileSizeEx. Gracias por su ayuda.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nadas
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Función que retorna el valor de retorno de otra función
Programación C/C++
|
naderST
|
7
|
4,771
|
7 Diciembre 2011, 23:45 pm
por naderST
|
|
|
Evaluar Una Funcion dentro de otra funcion Python
Scripting
|
cristiantorres
|
1
|
10,404
|
14 Abril 2012, 06:20 am
por cristiantorres
|
|
|
[javascript] llamar a funcion que se recibe por parametro de la funcion
Desarrollo Web
|
Graphixx
|
0
|
5,675
|
24 Abril 2012, 19:36 pm
por Graphixx
|
|
|
Como llamar a una funcion dentro de otra funcion. Una ayuda urgentemente porfavo
Programación C/C++
|
LobateZZZ
|
1
|
10,309
|
14 Abril 2013, 03:07 am
por rir3760
|
|
|
Pasar nombre de funcion como parametro de otra funcion en java
Java
|
xGisKaRDx
|
3
|
9,615
|
1 Agosto 2014, 23:27 pm
por jhonatanAsm
|
|