1
0

Implement dokany callbacks

This commit is contained in:
Scott E. Graves
2017-03-26 00:43:51 -05:00
parent 0240f8de08
commit a2f41eed1c
2 changed files with 244 additions and 53 deletions

View File

@@ -151,11 +151,12 @@ class SIADRIVE_DOKAN_EXPORTABLE DokanCreateFile :
public CEvent
{
public:
DokanCreateFile(const SString& filePath, const DWORD& fileAttributesAndFlags, const DWORD& creationDisposition, const ACCESS_MASK& genericDesiredAccess) :
DokanCreateFile(const SString& filePath, const DWORD& fileAttributesAndFlags, const DWORD& creationDisposition, const ACCESS_MASK& genericDesiredAccess, const NTSTATUS& returnStatus) :
_filePath(filePath),
_fileAttributesAndFlags(fileAttributesAndFlags),
_creationDisposition(creationDisposition),
_genericDesiredAccess(genericDesiredAccess)
_genericDesiredAccess(genericDesiredAccess),
_returnStatus(returnStatus)
{
}
@@ -170,11 +171,12 @@ private:
const DWORD _fileAttributesAndFlags;
const DWORD _creationDisposition;
const ACCESS_MASK _genericDesiredAccess;
const NTSTATUS _returnStatus;
public:
virtual std::shared_ptr<CEvent> Clone() const override
{
return std::shared_ptr<CEvent>(new DokanCreateFile(_filePath, _fileAttributesAndFlags, _creationDisposition, _genericDesiredAccess));
return std::shared_ptr<CEvent>(new DokanCreateFile(_filePath, _fileAttributesAndFlags, _creationDisposition, _genericDesiredAccess, _returnStatus));
}
virtual SString GetSingleLineMessage() const override
@@ -182,7 +184,8 @@ public:
return L"DokanCreateFile|FILE|" + _filePath +
"|ATTR|" + SString::FromUInt32(_fileAttributesAndFlags) +
"|DISP|" + SString::FromUInt32(_creationDisposition) +
"|MASK|" + SString::FromUInt32(_genericDesiredAccess);
"|MASK|" + SString::FromUInt32(_genericDesiredAccess) +
"|RET|" + SString::FromUInt32(_returnStatus);
}
};
@@ -222,5 +225,35 @@ public:
}
};
class SIADRIVE_DOKAN_EXPORTABLE DokanCloseFile :
public CEvent
{
public:
DokanCloseFile(const SString& cachePath) :
_cachePath(cachePath)
{
}
public:
virtual ~DokanCloseFile()
{
}
private:
const SString _cachePath;
public:
virtual std::shared_ptr<CEvent> Clone() const override
{
return std::shared_ptr<CEvent>(new DokanCloseFile(_cachePath));
}
virtual SString GetSingleLineMessage() const override
{
return L"DokanCloseFile|PATH|" + _cachePath;
}
};
NS_END(3)
#endif //_SIADOKANDRIVE_H