Mostrando las entradas con la etiqueta RAPI. Mostrar todas las entradas
Mostrando las entradas con la etiqueta RAPI. Mostrar todas las entradas

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;
}