c++ Problem bitte schneller hilfe LESEN :(
-
Hab da ein kleines Problem mit MS Visual C++
Und das sieht wie folgt aus er wirft mit beim compilieren immer folgende fehlermeldung raus... error C2065: 'DISK_GEOMETRY_EX' : undeclared identifier
was normalerweise nicht sein kann da ich die benötige header datei schon includet habe:
( Requirements
Client: Included in Windows XP.
Server: Included in Windows Server 2003.
Header: Declared in Winioctl.h.)Wenn jemand eine lösung dafür hat bitte schnell antworten..

Gruss tim
-
Du solltest DISK_GEOMETRY_EX dem Compiler bekannt machen.
Mal im ernst, hellsehen können wir nicht. Zeig mal etwas Quellcode oder mach ein Minimalbeispiel.
-
Welchen Wert hat _WIN32_WINNT?
-
Hier ist ein Teil der Funktion:
void HDD_USB(HWND hDlg)
{
OSVERSIONINFO lpVersionInfo;
char szHDD[30];
HANDLE hHDD = NULL;
DWORD lpNoB, dwReturnValue;
BOOL bReturnValue;
BOOL bFoundOne = FALSE;
BYTE lpBuffer[512];
DWORD dwBufferSize = sizeof(DISK_GEOMETRY_EX);
DWORD lpBytes;
DWORD dwLastValid;
BOOL bFoundEnd = FALSE;
int i32G_valid, i1G_valid, i32M_valid, i1M_valid;
int i, ikB, iHDD, iMax;
div_t div_result;
DISK_GEOMETRY_EX OutBuffer;
LONGLONG ll_1 = 1;
BOOL bValid;
LARGE_INTEGER li;for (iHDD = 0; ((iHDD < 10) && (!bFoundOne)); iHDD++)
{
sprintf(szHDD, "\\\.\\physicaldrive%i", iHDD);
hHDD = CreateFile(szHDD,
GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL);
if (hHDD != INVALID_HANDLE_VALUE)
{
if (DeviceIoControl(hHDD, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, &OutBuffer, dwBufferSize,
&lpBytes, NULL)){
dwReturnValue = SetFilePointer(hHDD, 0, NULL, FILE_BEGIN);
bReturnValue = ReadFile(hHDD, &lpBuffer, 512 &lpNoB, NULL);
if ((lpBuffer[0] == 'E') && (lpBuffer[1] == 'V'))
{
bFoundOne = TRUE;
}
}
}
}}
-
timmaeh schrieb:
Hier ist ein Teil der Funktion:
void HDD_USB(HWND hDlg) { OSVERSIONINFO lpVersionInfo; char szHDD[30]; HANDLE hHDD = NULL; DWORD lpNoB, dwReturnValue; BOOL bReturnValue; BOOL bFoundOne = FALSE; BYTE lpBuffer[512]; DWORD dwBufferSize = sizeof(DISK_GEOMETRY_EX); DWORD lpBytes; DWORD dwLastValid; BOOL bFoundEnd = FALSE; int i32G_valid, i1G_valid, i32M_valid, i1M_valid; int i, ikB, iHDD, iMax; div_t div_result; DISK_GEOMETRY_EX OutBuffer; LONGLONG ll_1 = 1; BOOL bValid; LARGE_INTEGER li; for (iHDD = 0; ((iHDD < 10) && (!bFoundOne)); iHDD++) { sprintf(szHDD, "\\\\.\\physicaldrive%i", iHDD); hHDD = CreateFile(szHDD, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL); if (hHDD != INVALID_HANDLE_VALUE) { if (DeviceIoControl(hHDD, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, &OutBuffer, dwBufferSize, &lpBytes, NULL)) { dwReturnValue = SetFilePointer(hHDD, 0, NULL, FILE_BEGIN); bReturnValue = ReadFile(hHDD, &lpBuffer, 512 &lpNoB, NULL); if ((lpBuffer[0] == 'E') && (lpBuffer[1] == 'V')) { bFoundOne = TRUE; } } } } }Daran erkenn ich nu aber nicht welche Header Du einbindest.
Und Codetags machen das lesen leichter
(s.o.)
-
Wenn du es so eilig hast, solltest du die angebotene Hilfestellung auch nutzen

Ein Blick in die Headerdatei genügt, um zu erkennen, dass die Deklaration der Struktur DISK_GEOMETRY_EX umgeben ist von einem
#if(_WIN32_WINNT >= 0x0500)
...
#endifWenn also bei dir _WIN32_WINNT nicht mindestens auf 0x500 definiert ist, dann kann das nicht funktionieren.
-
Joar morgens bin ich leider noch nicht so leistungsfähig

Aber es funzt ja nun

Danke nochmal an euch beide