"We are back" « oc.at

WIN32API: Experten-Frage

Geigerzeiger 19.08.2004 - 15:01 1059 10
Posts

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Hallo! Google spuckt zu diesem thema nix aus:

Sagt wem der Systemfehler 234: MORE_DATA_AVAILABLE im Zusammenhang mit der Funktion GetVolumeInformation() was?

Bräuchte die fkt. für die Datenträgerbezeichnungsermittlung
Gibts alternativen?
(Braäuchte schnelle Hilfe))- tia
Bearbeitet von Geigerzeiger am 21.08.2004, 15:14

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
ist vielleicht dein string für den volume-namen oder filesystem-namen zu klein?
hast schon GetLastError() gmacht?

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
ja sicher! drum komm ich ja auf die zahl 234
Der String hat die Länge 200. I glaub ned dass der zu kurz is

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Poste mal das entsprechende Codestück.

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Code:
#include <windows.h>
#include <stdio.h>

TCHAR lpvolName[200];  // Bezeichnung

int main()
{
	int length; DWORD dwErr;
   char root[MAX_PATH];

   DWORD  lpSerial;	// address of volume serial number
   DWORD  lpMCL;	// address of system's maximum filename length
   DWORD  lpFSFlags;	// address of file system flags

   char  lpFSNameBuffer[200];	// address of name of file system
   DWORD  nFSNSize;	// length of lpFileSystemNameBuffer

   strcpy(root, "f:\\");

 	if(GetVolumeInformation(root, lpvolName, length, &lpSerial,
   			&lpMCL, &lpFSFlags, lpFSNameBuffer, nFSNSize) == FALSE) {
                dwErr = GetLastError(); 
            	printf ("Error %d\n", dwErr);
          }
   
   printf("Volumename: %s\n", lpvolName);

   getchar();

   return 0;
}

kann sein dass man da noch einiges tun muß ... habe kA wie man mit der Funktion umgehen muß

Wenn ich für root "c:\\" (hd) oder "f:\\" (cdrom) verwende macht keinen Unterschied
Bearbeitet von Geigerzeiger am 19.08.2004, 16:44

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
najo, machs mit GetVolumeNameForVolumeMountPoint(...) oder gibt die die driveletters zurück?

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Du hast vergessen, die Längenparameter zu initialisieren.

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
und wie genau geht das?

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
length = 200;
nFSNSize = 200;

:duh:

(ich würd bei der Gelegenheit die Konstante 200 überall durch ein const int ersetzen)

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Zitat von that
length = 200;
nFSNSize = 200;

:duh:

(ich würd bei der Gelegenheit die Konstante 200 überall durch ein const int ersetzen)

jop! Werd ich morgen probieren. thx erstmal

Also wenn die Längen nicht initialisiert werden, spielt sich logischerweise gar nix.

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Problem gelöst: Funzt wunderbar!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz