Maandag, 25 april 2005

18:57 Credits.. ??

Als software ontwikkelaar ben je je al weer aan het voorbereiden voor de volgende opdracht,terwijl de huidige nog niet eens klaar is. Dus was aan het kijken op de site van dotnet for devices. Daar stond een stukje voorbeeld code met een klassieke “fout” er in.
Available memory in PocketPC and CF Flash.

Description: The available memory of a PocketPC can be found, calling the API GetDiskFreeEx. The first parameter to this API is a path to a particular directory. For the device itself, this path is the root directory. If a storage card is inserted this path should be: [\storage card]. In the following code snippet we show how to create a little class with a static member function to obtain availabe storage memory, making use of P/Invoke in combination with the GetDiskFreeEx API.

Code:

public class MemStatus
{
[DllImport("coredll.dll")]
public static extern bool GetDiskFreeSpaceEx (
string lpDirectoryName,
out ulong lpFreeBytesAvailableToCaller,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes);

public const string STORAGE_INTERNAL = "\\";
public const string STORAGE_FLASH_CARD =
"\\storage card\\";

public MemStatus()
{
}

public static bool GetStorageInfo (
string storagePath,
out ulong totalBytes,
out ulong availBytes)
{
ulong freeBytesAvail;
ulong totalBytesAvail;
ulong freeBytesTotal;
bool result = GetDiskFreeSpaceEx (storagePath,
out freeBytesAvail,
out totalBytesAvail,
out freeBytesTotal);

if (result == true)
{
totalBytes = ulong.totalBytesAvail;
availBytes = ulong.freeBytesAvail;
}
else
{
totalBytes = ulong.MaxValue;
availBytes = ulong.MaxValue;
}

return result
}
}

// Call this sample code like this:

int totalBytes;
int availBytes;

if (MemStatus.GetStorageInfo(
MemStatus.STORAGE_FLASH_CARD,
out totalBytes,
out availBytes))
{
label1.Text = totalBytes.ToString();
label2.Text = availBytes.ToString();
}
else
{
label1.Text = "?";
label2.Text = "?";
}


Vandaag stond op de weblog van Maarten Struys al een reactie, zie hieronder..
What was I thinking a long time ago? I showed a little code snippet to retrieve the available memory on a Windows CE device and / or a CF card, using the GetDiskFreeEx API. It turns out that about the only correct thing in the snippet was the declaration to properly P/Invoke into the API. The API returns pointers to large, unsigned integers and in the code snippet I converted them to integers. Thanks to Rene Teunissen the code snippet is now modified and takes ulongs in managed code. What can I say? I guess I am getting too old for this industry, having to deal with storage devices of over 2 GB.


Leuk, vooral hij je zo een veer ergens probeert te steken. Al voelt deze veer wel prettig ;)

Waar het om gaat? Dit voorbeeld geeft aan hoe je in Windows -CE - inderdaad het windows op die handheld computers, zoals de HP-Ipaq, in software kunt zien hoeveel ruimte er nog vrij is op een (hard)disk of geheugenkaartje. En die heb je regelmatig nodig als je bijvoorbeeld bestanden (foto’s) wilt kopieren, dan moet je eerst kijken of wel voldoende vrije ruimte is voor de bestanden.

In het getergde voorbeeld wordt per ongeluk de verkregen informatie afgerond op de grootte van een “integer”. Een integer is een variable die maximaal 31-bits getallen aan kan. Of te wel - voor de leken onder ons - geen getallen kan representeren groter dan grofweg 2 miljard (eigelijk 2 tot de macht 31).

Nu lijkt dat erg groot, maar geheugenkaarten worden steeds groter en als je een geheugenkaart van 2GB niet meer kunt ondersteunen, loop je al snel tegen de lamp. Wellicht omdat 4GB (grofweg 4 miljard bytes) al wel gebruik worden in foto camera’s. Je kunt er op wachten totdat ze gemeengoed worden of dat je apparaat gebruikt gaat worden door mensen die nu iets meer te besteden hebben, en dus gelijk de grotere geheugenkaarten kopen.

Als je er dan achter komt dat je een product gekocht hebt met en dergelijke fout er in, dan baal je goed, want dan kun je de kaart mogelijk niet eens optimaal gebruiken.. probeer dan maar een (selctie) van bestanden grotes dan 2GB te kopieren. Nu lijkt dat ongewoon, maar kijk eens in de nabije toekomst, dan zullen dergelijke (foto)bestand selecties of MP3 verzamelingen gemeengoed worden.

Is het erg wat hier is gebeurd? Nee, het gaat hier om een voorbeeld, of te wel hoe je een dergelijk proboleem zou kunnen oplossen. Iemand die dergelijke voorbeelden bekijkt en overneemt moet zich realiseren dat deze code deze beperkingen kent. En iedere software ontwikkelaar hoort te weten dat signed integers maximaal 32 bits breed zijn, waarvan je er 31 kunt gebruiken voor je getallen (1 bit wordt gebruikt om aan te geven of het getal positief of negatief is)….

Een ding is wel zeker, de site van Maarten is zeer zeker de moeite waard. Al was het maar omdat Maarten één van de twee in Nederland verblijvende die-hard Windows-CE ontwikkelaars is die door Microsoft eMVP certificaat heeft gekregen. En die krijg je niet zo maar.


Reacties..


RSS feed voor reacties.

TrackBack URI : http://reneeteunissen.nl/wp-trackback.php/700

Nog geen reacties!

Geef een reactie!

LET OP! De software achter deze weblog wordt constant vernieuwd.. Werkt er iets niet, stuur dan een emailtje naar Renee apestaartje zevenaar.org

Regels en paragraven worden automatisch afgebroken, en e-mail adressen worden automatisch tegen spammen gecodeerd. De volgende HTML icodes zijn toegestaan: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <code> <em> <i> <strike> <strong>

LET OP!!
Onderaan waar je jouw gegevens invult word je gevraagd een kleine sommetje uit te rekenen. Deze is eigenlijk te simpel voor woorden, maar om de som te kunnen oplossen moet je wel de Nederlandsetaal een klein beetje machtig zijn.
Hopelijk helpt deze truk te voorkomen dat Engelssprekenden het commentaar/reactie systeem misbruiken voor het plaatsen van linkjes naar reklame-websites van casino, poker en strip clubs. Dit is helaas nodig..


En dan nog even dit..

Wil je..

Wil je op de hoogte blijven wat er geplaatst wordt? Stuur dan een e-mailtje en je krijgt dan een e-mail wanneer een update heeft plaats gevonden. Zie het kopje Biografie voor het e-mail adres.

Auteursrechten en Gebruik van materiaal op deze website..

(C) Copyright 2002 - 2012 Renee Teunissen. Alle rechten voorbehouden, tenzij anders vermeldt
Het gebruik van teksten op deze website is toegestaan, mits voorzien van bronvermelding en als het even kan met een link naar deze website of met een deep-link naar het betrekkende stukje. Graag hoor ik van u als u mijn teksten gebruikt. Bij linken van stukjes, graag de perma-link gebruiken, omdat deze in de toekomst ook zullen blijven werken en altijd naar het juiste artikel blijven linken/wijzen!

Het gebruik van foto- en beeldmateriaal is alleen toegestaan na voorafgaand overleg. Meestal is dit geen enkele probleem, maar altijd even overleg, daar ik wil weten hoe en waar het materiaal gebruikt wordt of gaat worden. Ook is fotomateriaal vaak (nog) beschikbaar in de originele vorm en/of op afdruk kwaliteit, zonder opdruk of verstoringen.

Deze weblog is gebaseerd op de weblog software van wordpress, voorzien van uitbreidingen gevonden op het web of zelf geschreven. Layout, graphics en vormgeving (C) Renee Teunissen. Hosting, beheer en aanverwante zaken zijn in eigen beheer. Veel dank gaat uit naar mijn werkgever, PTS Software, voor het beschikbaar stelllen van de server-ruimte, internet-verbinding en bandbreedte voor al mijn websites.

Wil je (onder)delen overnemen? Neem dan even contact op. Vaak is het eenvoudiger om (onder)delen toe te sturen, dan 'domweg' alles te downloaden, decoderen, copieren, etc. Veel content wordt dymanisch opgebouwd, het zou zonde zijn om je tijd te verspillen met het uitvogelen hoe de techniek in elkaar steekt.

Tot slot: teksten, citaten, uitspraken, commentaren, etc vallen onder de (persoonlijke) verantwoordelijkheid van de schrijver/poster. Teksten kunnen bedoeld zijn om te prikkelen of een discussie te starten. Stoor je je aan een tekst, citaat, uitspraak of commentaar? Laat het dan weten via reactie-link onderaan het bericht of via een e-mail. Alle rechten voorbehouden om teksten, reacties, citaten, commentaren, etc te redigeren, kuisen en/of te verwijderen. Door deel te nemen aan deze website/weblog verklaar je hiermee akkoord.

268 queries. 0.295 || Powered by WordPress