Archief - [PROG][C#] API uit VB.NET naar C#

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

VenomGameworld

Legacy Member
Hey,

Ik heb op het internet een kant en klare snippet voor vb.net gevonden. Ik ben deze vollop aan't omzetten naar C#, de "gewone" code vormt hierbij geen probleem. Bij de API declaratie zit ik echter vast. Ik heb al verscheidene artikelen gelezen, maar veel verder kom ik niet.

Zo ziet het eruit in VB.NET:
Code:
Private Declare Function GetDiskFreeSpaceEx _
    Lib "kernel32" _
    Alias "GetDiskFreeSpaceExA" _
    (ByVal lpDirectoryName As String, _
    ByRef lpFreeBytesAvailableToCaller As Long, _
    ByRef lpTotalNumberOfBytes As Long, _
    ByRef lpTotalNumberOfFreeBytes As Long) As Long

Ik weet dat het in C# zal beginnen met:
Code:
[DllImport("kernel32.dll", EntryPoint = "GetDiskFreeSpaceExA")]
maar hoe het daarna verder moet met de variabelen...

Kan iemand mij hierbij helpen?

Alvast bedankt!

Tyfius

Legacy Member
Code:
[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
private extern static long GetDiskFreeSpaceEx(
ref String lpDirectoryName,
ref long lp...,
ref long lp...,
ref long lp...)
Volgens http://msdn2.microsoft.com/en-us/library/aa364937(VS.85).aspx geeft die functie echter een bool terug in plaats van een long, zoals die in jouw VB.NET voorbeeld gedeclareerd is.

VenomGameworld

Legacy Member
Bedankt!

Maar aangezien die functe een bool teruggeeft, heb ik geen gedacht meer hoe ik ze moet gebruiken. Ik sloeg het resultaat eerst in een long op.

Ik heb nu deze code en hij geeft in de console het volgende terug: "False" en "0".

Code:
long lBytesTotal = 0;
long lFreeBytes = 0;
long lFreeBytesAvailable = 0;
String drive = "C:\\";
Debug.Write(GetDiskFreeSpaceEx(ref drive, ref lFreeBytesAvailable, ref lBytesTotal, ref lFreeBytes));
Debug.Write(lFreeBytes);
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan