Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Findet funktion nicht, wo ist der Fehler

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.06.2004, 09:47 Uhr
~andreasK
Gast


Wenn ich den folgenden Header einbinde:


C++:
#include <winbase.h>



und in folgende Funktion aufrufe:




C++:
ReadDirectoryChangesW(hDir, &Buffer, sizeof(Buffer),
                                TRUE,
                                FILE_NOTIFY_CHANGE_SECURITY |
                                FILE_NOTIFY_CHANGE_CREATION |
                                FILE_NOTIFY_CHANGE_LAST_ACCESS |
                                FILE_NOTIFY_CHANGE_LAST_WRITE |
                                FILE_NOTIFY_CHANGE_SIZE |
                                FILE_NOTIFY_CHANGE_ATTRIBUTES |
                                FILE_NOTIFY_CHANGE_DIR_NAME |
                                FILE_NOTIFY_CHANGE_FILE_NAME,
                                &BytesReturned,
                                NULL,
                                NULL))



meldet mir der Compiler immer dass ReadDirectoryChangesW() ein nicht deklarierter Bezeichner ist, obwohl in der MSDN steht, dass die funktion in winbase.h definiert ist. Was ist mein Fehler muss da noch irgendwas einstellen, so dass der die findet?

LG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.06.2004, 09:48 Uhr
virtual
Sexiest Bit alive
(Operator)



Laß doch mal spaßeshalber das W am Ende weg.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.06.2004, 09:52 Uhr
~andreasK
Gast


ne hilft auch nix kommt wieder der selbe fehler die funtion steht auch mit dem W in der msdn also denk ich dass diese so stimmt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.06.2004, 10:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


windows.h includieren (statt winbase.h) und das W weglassen, dann sollte es gehen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.06.2004, 10:28 Uhr
~andreasK
Gast


sorry aber das geht auch nicht ganz komisch das da, denke das das W da hin muss hab die Funktion nämlich aus einer Beispielanwendung und da steht sie auch so drin!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.06.2004, 14:21 Uhr
Tommix



Hallo,
MSDN:

Zitat:

QuickInfo
Windows NT: Requires version 4.0 or later.
Windows: Unsupported. (sic!)
Windows CE: Unsupported.
Header: Declared in winbase.h.
Import Library: Use kernel32.lib.



Welche Windows-Version nutzt Du?

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.06.2004, 14:35 Uhr
~andreasK
Gast


Win2k benutz ich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.06.2004, 13:54 Uhr
~andreasK
Gast


So hab jetzt auch mal in meinen Präprozessor defs _UNICODE eingestellt, funktioniert aber trotzdem immer noch nicht!

Kann mir keiner helfen ist wichtig!

Hier mal der ganze Code:


C++:
// dirCon.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//
#if        WINVER < 0x0400
#define WINVER 0x0400
#endif

#include "stdafx.h"
#include <afx.h>

#include <process.h>
#include <afxmt.h>
#include <AFXPRIV.H>

#include <Windows.h>
#include <iostream>

using namespace std;


int main(int argc, char* argv[])
{
    HANDLE file;
    file = FindFirstChangeNotification(CString("c:\\test"), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME);

    WaitForSingleObject(file, INFINITE);
    cout << "treffer mit datei\n";

    while (true)
    {
        FindNextChangeNotification(file);
        WaitForSingleObject(file, INFINITE);
        cout << "treffer mit Datei\n";
    }

    FindCloseChangeNotification(file);

    ////////////////////////////////////////////////////////////
    USES_CONVERSION;
    HANDLE hDir = CreateFile(CString("C:\\test"),
                            FILE_LIST_DIRECTORY,
                            FILE_SHARE_READ | FILE_SHARE_DELETE,
                            NULL,
                            OPEN_EXISTING,
                            FILE_FLAG_BACKUP_SEMANTICS,
                            NULL);

    FILE_NOTIFY_INFORMATION Buffer[1024];
    DWORD BytesReturned;

    while (ReadDirectoryChangesW(hDir,
                                &Buffer,
                                sizeof(Buffer),
                                TRUE,
                                FILE_NOTIFY_CHANGE_SECURITY |
                                FILE_NOTIFY_CHANGE_CREATION |
                                FILE_NOTIFY_CHANGE_LAST_ACCESS |
                                FILE_NOTIFY_CHANGE_LAST_WRITE |
                                FILE_NOTIFY_CHANGE_SIZE |
                                FILE_NOTIFY_CHANGE_ATTRIBUTES |
                                FILE_NOTIFY_CHANGE_DIR_NAME |
                                FILE_NOTIFY_CHANGE_FILE_NAME,
                                &BytesReturned,
                                NULL,
                                NULL))
    {
        //
    }
    return 0;
}





LG und Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.06.2004, 13:21 Uhr
Spacelord
Hoffnungsloser Fall


Keine Ahnung warum das nicht per #include funktioniert??
Im winbase header ist ne Bedingung dass die Windowsversion >= 0x400 sein muss,dass ist bei Windows 2000 aber gegeben (0x500 glaub ich).Also kannst du dir auch das #define WINVER 0x0400 schenken,das sollte auch so passen.

Kannst ja mal die harte Variante probieren und die Funktion direkt über nen Funktionszeiger ansprechen.


C++:
int main(int argc, char* argv[])
{
typedef  BOOL (_stdcall *RDCW)(HANDLE,LPVOID,DWORD ,BOOL ,
        DWORD,LPDWORD ,LPOVERLAPPED ,LPOVERLAPPED_COMPLETION_ROUTINE);

    RDCW ReadDirectoryChangesW=NULL;
    ReadDirectoryChangesW =(RDCW)GetProcAddress(GetModuleHandle("kernel32.dll"), "ReadDirectoryChangesW");
    if(ReadDirectoryChangesW!=NULL)
        std::cout<<"Funktion bereit!\n";
...........



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 09.06.2004 um 13:25 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: