This is a rather technical question and may belong in another area, but I couldn't find anyplace else appropriate.
I'm using a Windows 8.1 guest OS to do software development work in Visual Studio 2013. We have an application that uses ReadDirectoryChangesW() to monitor for changes on a file. When the file is located on one of the "psf" volumes mounted as a Windows drive letter (in this case the "Y:" drive which is the user's home directory), ReadDirectoryChangesW() does not work as expected. While it returns a success indicator (non-zero return value), it indicates there are no bytes returned in the buffer. Examining the buffer however reveals a message of "prl_fs: buggy apps exceed buffers" in the FILE_NOTIFY_INFORMATION::FileName member. I'm unable to locate any information on this message (I'm guessing it's an internal debug thing to Parallels). What does this message mean? Note that using the exact same code to monitor file changes on the guest OS's "C:" drive (a virtual hard disk file) works fine.
Here is a code snippet
Code:
HANDLE hDir = CreateFile(filepath,
FILE_LIST_DIRECTORY,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if (hDir != INVALID_HANDLE_VALUE)
{
FILE_NOTIFY_INFORMATION* buffer = (FILE_NOTIFY_INFORMATION*)malloc(NOTIFY_BUFFER_SIZE);
if (buffer)
{
DWORD bytes = 0;
while (ReadDirectoryChangesW(hDir, buffer, NOTIFY_BUFFER_SIZE, false,
FILE_NOTIFY_CHANGE_LAST_WRITE,
&bytes, NULL, NULL))
{
if (bytes > 0)
{
...
The bytes variable always returns a value of 0, but peeking at buffer->FileName it contains "prl_fs: buggy apps exceed buffers".
Any help would be appreciated.
Thanks
- Josh