viernes, junio 20, 2008

Navegando el FileSystem desde Desktop a traves de RAPI

A continuación dejo un codigo para poder tomar los directorios y archivos de un dispositivo con WINCE desde una aplicación desktop, por medio de la RAPI.


[Flags]
enum FAF:int
{
FAF_ATTRIBUTES = 0x01,
FAF_CREATION_TIME = 0x02,
FAF_LASTACCESS_TIME = 0x04,
FAF_LASTWRITE_TIME = 0x08,
FAF_SIZE_HIGH = 0x10,
FAF_SIZE_LOW = 0x20,
FAF_OID = 0x40,
FAF_NAME = 0x80,
//FAF_ATTRIB_CHILDREN = 0x80,
//FAF_ATTRIB_NO_HIDDEN = &H2000,
//FAF_FOLDERS_ONLY = &H4000,
//FAF_NO_HIDDEN_SYS_ROMMODULES = &H8000,
//FAF_GETTARGET = &H10000
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
class CE_FIND_DATA
{
int dwFileAttributes;
int ftCreationTimeLo, ftCreationTimeHi, ftLastAccessTimeLo, ftLastAccessTimeHi;
int ftLastWriteTimeLo, ftLastWriteTimeHi, nFileSizeLo, nFileSizeHi;
int dwOID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
string cFileName;
public override string ToString()
{
return cFileName;
}
}

public bool FindAllFiles(string szPath)
{
IntPtr pData;
int cData;
bool bresult;
Create a NEW ceFindData Structure
CeFindData[] myCeFindDataS = new CeFindData[1];
bresult = CeFindAllFiles(szPath, (int)FAF.FAF_ATTRIBUTES | (int)FAF.FAF_NAME, out cData, out pData);
if (bresult)
{
IntPtr p = pData;
for (int i=0; i< cData ;i++)
{
CE_FIND_DATA fd;
fd = (CE_FIND_DATA) Marshal.PtrToStructure(p, typeof(CE_FIND_DATA));
p = new IntPtr(p.ToInt32() + Marshal.SizeOf(typeof(CE_FIND_DATA)));
}
}
return bresult;
}

1 comentario:

Maru dijo...

Hey... nada que ver este espacio que es super tecnologico (me gusto el primer articulo de sql...[T-Sql] Sacarle a una fecha el tiempo es una funcion re hincha huevos jejeje... bueno nada. fue "COLGADAMENTE" buena tu presencia.. la mejor para tus cosas!


maru