mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
src: dll: FspDebugLogRequest, FspDebugLogResponse
This commit is contained in:
parent
c2e38bcc97
commit
301e8fed62
134
src/dll/debug.c
134
src/dll/debug.c
@ -69,7 +69,7 @@ FSP_API VOID FspDebugLogFT(const char *format, PFILETIME FileTime)
|
|||||||
|
|
||||||
#define MAKE_UINT32_PAIR(v) (((v) >> 32) & 0xffffffff), ((v) & 0xffffffff)
|
#define MAKE_UINT32_PAIR(v) (((v) >> 32) & 0xffffffff), ((v) & 0xffffffff)
|
||||||
|
|
||||||
static inline const char *FspDebugLogDispositionString(UINT32 CreateOptions)
|
static const char *FspDebugLogDispositionString(UINT32 CreateOptions)
|
||||||
{
|
{
|
||||||
switch ((CreateOptions >> 24) & 0xff)
|
switch ((CreateOptions >> 24) & 0xff)
|
||||||
{
|
{
|
||||||
@ -90,6 +90,13 @@ static inline const char *FspDebugLogDispositionString(UINT32 CreateOptions)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *FspDebugLogUserContextString(UINT64 UserContext, UINT64 UserContext2, char *Buf)
|
||||||
|
{
|
||||||
|
wsprintfA(Buf, 0 == UserContext2 ? "%p" : "%p:%p", UserContext, UserContext2);
|
||||||
|
|
||||||
|
return Buf;
|
||||||
|
}
|
||||||
|
|
||||||
static const char *FspDebugLogFileTimeString(UINT64 FileTime, char *Buf)
|
static const char *FspDebugLogFileTimeString(UINT64 FileTime, char *Buf)
|
||||||
{
|
{
|
||||||
SYSTEMTIME SystemTime;
|
SYSTEMTIME SystemTime;
|
||||||
@ -153,13 +160,13 @@ static const char *FspDebugLogVolumeInfoString(FSP_FSCTL_VOLUME_INFO *VolumeInfo
|
|||||||
return Buf;
|
return Buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline VOID FspDebugLogRequestVoid(FSP_FSCTL_TRANSACT_REQ *Request, const char *Name)
|
static VOID FspDebugLogRequestVoid(FSP_FSCTL_TRANSACT_REQ *Request, const char *Name)
|
||||||
{
|
{
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>%s\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint, Name);
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint, Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline VOID FspDebugLogResponseStatus(FSP_FSCTL_TRANSACT_RSP *Response, const char *Name)
|
static VOID FspDebugLogResponseStatus(FSP_FSCTL_TRANSACT_RSP *Response, const char *Name)
|
||||||
{
|
{
|
||||||
FspDebugLog("%S[TID=%ld]: %p: <<%s IoStatus=%lx[%ld]\n",
|
FspDebugLog("%S[TID=%ld]: %p: <<%s IoStatus=%lx[%ld]\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Response->Hint, Name,
|
FspDiagIdent(), GetCurrentThreadId(), Response->Hint, Name,
|
||||||
@ -168,6 +175,7 @@ static inline VOID FspDebugLogResponseStatus(FSP_FSCTL_TRANSACT_RSP *Response, c
|
|||||||
|
|
||||||
FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
||||||
{
|
{
|
||||||
|
char UserContextBuf[40];
|
||||||
char CreationTimeBuf[32], LastAccessTimeBuf[32], LastWriteTimeBuf[32];
|
char CreationTimeBuf[32], LastAccessTimeBuf[32], LastWriteTimeBuf[32];
|
||||||
char *Sddl = 0;
|
char *Sddl = 0;
|
||||||
|
|
||||||
@ -206,86 +214,93 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
LocalFree(Sddl);
|
LocalFree(Sddl);
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactOverwriteKind:
|
case FspFsctlTransactOverwriteKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>Overwrite%s %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>Overwrite%s %s%S%s%s, "
|
||||||
"FileAttributes=%lx\n",
|
"FileAttributes=%lx\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->Req.Overwrite.Supersede ? " [Supersede]" : "",
|
Request->Req.Overwrite.Supersede ? " [Supersede]" : "",
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.Overwrite.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.Overwrite.UserContext2,
|
Request->Req.Overwrite.UserContext, Request->Req.Overwrite.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.Overwrite.FileAttributes);
|
Request->Req.Overwrite.FileAttributes);
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactCleanupKind:
|
case FspFsctlTransactCleanupKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>Cleanup%s %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>Cleanup%s %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->Req.Cleanup.Delete ? " [Delete]" : "",
|
Request->Req.Cleanup.Delete ? " [Delete]" : "",
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.Cleanup.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.Cleanup.UserContext2);
|
Request->Req.Cleanup.UserContext, Request->Req.Cleanup.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactCloseKind:
|
case FspFsctlTransactCloseKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>Close %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>Close %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.Close.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.Close.UserContext2);
|
Request->Req.Close.UserContext, Request->Req.Close.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactReadKind:
|
case FspFsctlTransactReadKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>Read %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>Read %s%S%s%s, "
|
||||||
"Address=%p, Offset=%lx:%lx, Length=%ld, Key=%lx\n",
|
"Address=%p, Offset=%lx:%lx, Length=%ld, Key=%lx\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.Read.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.Read.UserContext2,
|
Request->Req.Read.UserContext, Request->Req.Read.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.Read.Address,
|
Request->Req.Read.Address,
|
||||||
MAKE_UINT32_PAIR(Request->Req.Read.Offset),
|
MAKE_UINT32_PAIR(Request->Req.Read.Offset),
|
||||||
Request->Req.Read.Length,
|
Request->Req.Read.Length,
|
||||||
Request->Req.Read.Key);
|
Request->Req.Read.Key);
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactWriteKind:
|
case FspFsctlTransactWriteKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>Write%s %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>Write%s %s%S%s%s, "
|
||||||
"Address=%p, Offset=%lx:%lx, Length=%ld, Key=%lx\n",
|
"Address=%p, Offset=%lx:%lx, Length=%ld, Key=%lx\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->Req.Write.ConstrainedIo ? " [C]" : "",
|
Request->Req.Write.ConstrainedIo ? " [C]" : "",
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.Write.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.Write.UserContext2,
|
Request->Req.Write.UserContext, Request->Req.Write.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.Write.Address,
|
Request->Req.Write.Address,
|
||||||
MAKE_UINT32_PAIR(Request->Req.Write.Offset),
|
MAKE_UINT32_PAIR(Request->Req.Write.Offset),
|
||||||
Request->Req.Write.Length,
|
Request->Req.Write.Length,
|
||||||
Request->Req.Write.Key);
|
Request->Req.Write.Key);
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactQueryInformationKind:
|
case FspFsctlTransactQueryInformationKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>QueryInformation %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>QueryInformation %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.QueryInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.QueryInformation.UserContext2);
|
Request->Req.QueryInformation.UserContext, Request->Req.QueryInformation.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactSetInformationKind:
|
case FspFsctlTransactSetInformationKind:
|
||||||
switch (Request->Req.SetInformation.FileInformationClass)
|
switch (Request->Req.SetInformation.FileInformationClass)
|
||||||
{
|
{
|
||||||
case 4/*FileBasicInformation*/:
|
case 4/*FileBasicInformation*/:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Basic] %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Basic] %s%S%s%s, "
|
||||||
"FileAttributes=%lx, CreationTime=%s, LastAccessTime=%s, LastWriteTime=%s\n",
|
"FileAttributes=%lx, CreationTime=%s, LastAccessTime=%s, LastWriteTime=%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2,
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.SetInformation.Info.Basic.FileAttributes,
|
Request->Req.SetInformation.Info.Basic.FileAttributes,
|
||||||
FspDebugLogFileTimeString(Request->Req.SetInformation.Info.Basic.CreationTime,
|
FspDebugLogFileTimeString(Request->Req.SetInformation.Info.Basic.CreationTime,
|
||||||
CreationTimeBuf),
|
CreationTimeBuf),
|
||||||
@ -295,58 +310,63 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
LastWriteTimeBuf));
|
LastWriteTimeBuf));
|
||||||
break;
|
break;
|
||||||
case 19/*FileAllocationInformation*/:
|
case 19/*FileAllocationInformation*/:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Allocation] %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Allocation] %s%S%s%s, "
|
||||||
"AllocationSize=%lx:%lx\n",
|
"AllocationSize=%lx:%lx\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2,
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
MAKE_UINT32_PAIR(Request->Req.SetInformation.Info.Allocation.AllocationSize));
|
MAKE_UINT32_PAIR(Request->Req.SetInformation.Info.Allocation.AllocationSize));
|
||||||
break;
|
break;
|
||||||
case 20/*FileEndOfFileInformation*/:
|
case 20/*FileEndOfFileInformation*/:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [EndOfFile] %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [EndOfFile] %s%S%s%s, "
|
||||||
"FileSize = %lx:%lx\n",
|
"FileSize = %lx:%lx\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2,
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
MAKE_UINT32_PAIR(Request->Req.SetInformation.Info.EndOfFile.FileSize));
|
MAKE_UINT32_PAIR(Request->Req.SetInformation.Info.EndOfFile.FileSize));
|
||||||
break;
|
break;
|
||||||
case 13/*FileDispositionInformation*/:
|
case 13/*FileDispositionInformation*/:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Disposition] %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Disposition] %s%S%s%s, "
|
||||||
"%s\n",
|
"%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2,
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.SetInformation.Info.Disposition.Delete ? "Delete" : "Undelete");
|
Request->Req.SetInformation.Info.Disposition.Delete ? "Delete" : "Undelete");
|
||||||
break;
|
break;
|
||||||
case 10/*FileRenameInformation*/:
|
case 10/*FileRenameInformation*/:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Rename] %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [Rename] %s%S%s%s, "
|
||||||
"NewFileName=\"%S\"%s\n",
|
"NewFileName=\"%S\"%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2,
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
(PWSTR)(Request->Buffer + Request->Req.SetInformation.Info.Rename.NewFileName.Offset),
|
(PWSTR)(Request->Buffer + Request->Req.SetInformation.Info.Rename.NewFileName.Offset),
|
||||||
Request->Req.SetInformation.Info.Rename.ReplaceIfExists ? " ReplaceIfExists" : "");
|
Request->Req.SetInformation.Info.Rename.ReplaceIfExists ? " ReplaceIfExists" : "");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [INVALID] %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>SetInformation [INVALID] %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetInformation.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetInformation.UserContext2);
|
Request->Req.SetInformation.UserContext, Request->Req.SetInformation.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactQueryEaKind:
|
case FspFsctlTransactQueryEaKind:
|
||||||
@ -356,13 +376,14 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
FspDebugLogRequestVoid(Request, "SETEA");
|
FspDebugLogRequestVoid(Request, "SETEA");
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactFlushBuffersKind:
|
case FspFsctlTransactFlushBuffersKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>FlushBuffers %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>FlushBuffers %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.FlushBuffers.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.FlushBuffers.UserContext2);
|
Request->Req.FlushBuffers.UserContext, Request->Req.FlushBuffers.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactQueryVolumeInformationKind:
|
case FspFsctlTransactQueryVolumeInformationKind:
|
||||||
FspDebugLogRequestVoid(Request, "QueryVolumeInformation");
|
FspDebugLogRequestVoid(Request, "QueryVolumeInformation");
|
||||||
@ -383,14 +404,15 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactQueryDirectoryKind:
|
case FspFsctlTransactQueryDirectoryKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>QueryDirectory %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>QueryDirectory %s%S%s%s, "
|
||||||
"Address=%p, Offset=%lx:%lx, Length=%ld, Pattern=%s%S%s\n",
|
"Address=%p, Offset=%lx:%lx, Length=%ld, Pattern=%s%S%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.QueryDirectory.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.QueryDirectory.UserContext2,
|
Request->Req.QueryDirectory.UserContext, Request->Req.QueryDirectory.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.QueryDirectory.Address,
|
Request->Req.QueryDirectory.Address,
|
||||||
MAKE_UINT32_PAIR(Request->Req.QueryDirectory.Offset),
|
MAKE_UINT32_PAIR(Request->Req.QueryDirectory.Offset),
|
||||||
Request->Req.QueryDirectory.Length,
|
Request->Req.QueryDirectory.Length,
|
||||||
@ -412,13 +434,14 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
FspDebugLogRequestVoid(Request, "LOCKCONTROL");
|
FspDebugLogRequestVoid(Request, "LOCKCONTROL");
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactQuerySecurityKind:
|
case FspFsctlTransactQuerySecurityKind:
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>QuerySecurity %s%S%s%p, %p\n",
|
FspDebugLog("%S[TID=%ld]: %p: >>QuerySecurity %s%S%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.QuerySecurity.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.QuerySecurity.UserContext2);
|
Request->Req.QuerySecurity.UserContext, Request->Req.QuerySecurity.UserContext2,
|
||||||
|
UserContextBuf));
|
||||||
break;
|
break;
|
||||||
case FspFsctlTransactSetSecurityKind:
|
case FspFsctlTransactSetSecurityKind:
|
||||||
if (0 != Request->Req.SetSecurity.SecurityDescriptor.Size)
|
if (0 != Request->Req.SetSecurity.SecurityDescriptor.Size)
|
||||||
@ -428,14 +451,15 @@ FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
|||||||
OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
|
OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
|
||||||
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION,
|
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION,
|
||||||
&Sddl, 0);
|
&Sddl, 0);
|
||||||
FspDebugLog("%S[TID=%ld]: %p: >>SetSecurity %s%S%s%p, %p, "
|
FspDebugLog("%S[TID=%ld]: %p: >>SetSecurity %s%S%s%s, "
|
||||||
"SecurityInformation=%lx, AccessToken=%lx, Security=%s%s%s\n",
|
"SecurityInformation=%lx, AccessToken=%lx, Security=%s%s%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Request->Hint,
|
||||||
Request->FileName.Size ? "\"" : "",
|
Request->FileName.Size ? "\"" : "",
|
||||||
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
Request->FileName.Size ? (PWSTR)Request->Buffer : L"",
|
||||||
Request->FileName.Size ? "\", " : "",
|
Request->FileName.Size ? "\", " : "",
|
||||||
(PVOID)Request->Req.SetSecurity.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Request->Req.SetSecurity.UserContext2,
|
Request->Req.SetSecurity.UserContext, Request->Req.SetSecurity.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Request->Req.SetSecurity.SecurityInformation,
|
Request->Req.SetSecurity.SecurityInformation,
|
||||||
Request->Req.SetSecurity.AccessToken,
|
Request->Req.SetSecurity.AccessToken,
|
||||||
Sddl ? "\"" : "",
|
Sddl ? "\"" : "",
|
||||||
@ -454,6 +478,7 @@ FSP_API VOID FspDebugLogResponse(FSP_FSCTL_TRANSACT_RSP *Response)
|
|||||||
if (STATUS_PENDING == Response->IoStatus.Status)
|
if (STATUS_PENDING == Response->IoStatus.Status)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
char UserContextBuf[40];
|
||||||
char InfoBuf[256];
|
char InfoBuf[256];
|
||||||
char *Sddl = 0;
|
char *Sddl = 0;
|
||||||
|
|
||||||
@ -473,11 +498,12 @@ FSP_API VOID FspDebugLogResponse(FSP_FSCTL_TRANSACT_RSP *Response)
|
|||||||
(PWSTR)(Response->Buffer + Response->Rsp.Create.Reparse.FileName.Offset));
|
(PWSTR)(Response->Buffer + Response->Rsp.Create.Reparse.FileName.Offset));
|
||||||
else
|
else
|
||||||
FspDebugLog("%S[TID=%ld]: %p: <<Create IoStatus=%lx[%ld] "
|
FspDebugLog("%S[TID=%ld]: %p: <<Create IoStatus=%lx[%ld] "
|
||||||
"%p, %p, GrantedAccess=%lx, FileInfo=%s\n",
|
"UserContext=%s, GrantedAccess=%lx, FileInfo=%s\n",
|
||||||
FspDiagIdent(), GetCurrentThreadId(), Response->Hint,
|
FspDiagIdent(), GetCurrentThreadId(), Response->Hint,
|
||||||
Response->IoStatus.Status, Response->IoStatus.Information,
|
Response->IoStatus.Status, Response->IoStatus.Information,
|
||||||
(PVOID)Response->Rsp.Create.Opened.UserContext,
|
FspDebugLogUserContextString(
|
||||||
(PVOID)Response->Rsp.Create.Opened.UserContext2,
|
Response->Rsp.Create.Opened.UserContext, Response->Rsp.Create.Opened.UserContext2,
|
||||||
|
UserContextBuf),
|
||||||
Response->Rsp.Create.Opened.GrantedAccess,
|
Response->Rsp.Create.Opened.GrantedAccess,
|
||||||
FspDebugLogFileInfoString(&Response->Rsp.Create.Opened.FileInfo, InfoBuf));
|
FspDebugLogFileInfoString(&Response->Rsp.Create.Opened.FileInfo, InfoBuf));
|
||||||
break;
|
break;
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <aclapi.h>
|
#include <aclapi.h>
|
||||||
|
|
||||||
static INIT_ONCE FspDiagIdentInitOnce = INIT_ONCE_STATIC_INIT;
|
static INIT_ONCE FspDiagIdentInitOnce = INIT_ONCE_STATIC_INIT;
|
||||||
static WCHAR FspDiagIdentBuf[16] = L"UNKNOWN";
|
static WCHAR FspDiagIdentBuf[20] = L"UNKNOWN";
|
||||||
|
|
||||||
static BOOL WINAPI FspDiagIdentInit(
|
static BOOL WINAPI FspDiagIdentInit(
|
||||||
PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context)
|
PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user