Code:
int wmain()
{
    

    HANDLE hd = CreateFile(L"myfiled.txt",GENERIC_ALL,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    
    CHAR buff[200];
    DWORD written;

    
    int m=ReadFile(hd,buff,200,&written,NULL);
    if(!m)
    {

        cout<<"Read file error";
        return 0;
    }
    for(int i=0;i<=1998;i++)
    {
        cout<<buff[i];
    }
        
    return 0;
}
2nd parameter of Readfile is LPVOID lpBuffer then why are passing char* to it? It is working fine even we have not cast it.

I think the correct method should be:

Code:
int wmain()
{
    

    HANDLE hd = CreateFile(L"myfiled.txt",GENERIC_ALL,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    
    CHAR buff[200];
    DWORD written;

    
    int m=ReadFile(hd,(void*)&buff,200,&written,NULL); // cast to void*
    if(!m)
    {

        cout<<"Read file error\n";
        return 0;
    }
    for(int i=0;i<=198;i++)
    {
        cout<<buff[i];  
    }
        
    return 0;
}