sys: FSP_ENTER/FSP_LEAVE

This commit is contained in:
Bill Zissimopoulos 2015-11-17 11:50:12 -08:00
parent be46a057c5
commit ef2d278311
19 changed files with 136 additions and 120 deletions

View File

@ -17,10 +17,9 @@ FspCleanup(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspClose(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspCreate(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspDeviceControl(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspDirectoryControl(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -19,17 +19,15 @@ DriverEntry(
_In_ PDRIVER_OBJECT DriverObject, _In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath) _In_ PUNICODE_STRING RegistryPath)
{ {
UNREFERENCED_PARAMETER(RegistryPath); FSP_ENTER();
NTSTATUS Status;
/* create the file system device object */ /* create the file system device object */
UNICODE_STRING DeviceName; UNICODE_STRING DeviceName;
RtlInitUnicodeString(&DeviceName, L"" DRIVER_NAME); RtlInitUnicodeString(&DeviceName, L"" DRIVER_NAME);
Status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_FILE_SYSTEM, 0, FALSE, Result = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_FILE_SYSTEM, 0, FALSE,
&FspDeviceObject); &FspDeviceObject);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Result))
return Status; FSP_RETURN();
/* setup the driver object */ /* setup the driver object */
DriverObject->DriverUnload = FspUnload; DriverObject->DriverUnload = FspUnload;
@ -96,20 +94,19 @@ DriverEntry(
/* /*
* Register as a file system; this informs all filter drivers. * Register as a file system; this informs all filter drivers.
* Future drivers will not be informed because we are a FILE_DEVICE_FILE_SYSTEM! * Future drivers will *not* be informed because we are a FILE_DEVICE_FILE_SYSTEM!
*/ */
IoRegisterFileSystem(FspDeviceObject); IoRegisterFileSystem(FspDeviceObject);
return STATUS_SUCCESS; FSP_LEAVE("DriverObject->DriverName=\"%wZ\", RegistryPath=\"%wZ\"",
&DriverObject->DriverName, RegistryPath);
} }
VOID VOID
FspUnload( FspUnload(
_In_ PDRIVER_OBJECT DriverObject) _In_ PDRIVER_OBJECT DriverObject)
{ {
UNREFERENCED_PARAMETER(DriverObject); FSP_ENTER_VOID(PAGED_CODE());
PAGED_CODE();
if (0 != FspDeviceObject) if (0 != FspDeviceObject)
{ {
@ -117,6 +114,9 @@ FspUnload(
IoDeleteDevice(FspDeviceObject); IoDeleteDevice(FspDeviceObject);
FspDeviceObject = 0; FspDeviceObject = 0;
} }
FSP_LEAVE_VOID("DriverObject->DriverName=\"%wZ\"",
&DriverObject->DriverName);
} }
PDEVICE_OBJECT FspDeviceObject; PDEVICE_OBJECT FspDeviceObject;

View File

@ -11,6 +11,7 @@
#define DRIVER_NAME "winfsp" #define DRIVER_NAME "winfsp"
/* DEBUGLOG */
#if DBG #if DBG
#define DEBUGLOG(fmt, ...) \ #define DEBUGLOG(fmt, ...) \
DbgPrint(DRIVER_NAME "!" __FUNCTION__ ": " fmt "\n", __VA_ARGS__) DbgPrint(DRIVER_NAME "!" __FUNCTION__ ": " fmt "\n", __VA_ARGS__)
@ -18,6 +19,51 @@
#define DEBUGLOG(fmt, ...) ((void)0) #define DEBUGLOG(fmt, ...) ((void)0)
#endif #endif
/* enter/leave*/
#if DBG
#define FSP_ENTER_(...) \
__VA_ARGS__; \
try \
{
#define FSP_LEAVE_(rfmt, r, fmt, ...) \
goto fsp_leave_label; \
fsp_leave_label:; \
} \
finally \
{ \
const char *fsp_leave_format = AbnormalTermination() ? \
DRIVER_NAME "!" __FUNCTION__ "(" fmt ") = !AbnormalTermination\n" : \
DRIVER_NAME "!" __FUNCTION__ "(" fmt ")" rfmt "\n"; \
DbgPrint(fsp_leave_format, __VA_ARGS__, r); \
}
#else
#define FSP_ENTER_(...) \
__VA_ARGS__; \
{
#define FSP_LEAVE_(rfmt, r, fmt, ...) \
goto fsp_leave_label; \
fsp_leave_label:; \
}
#endif
#define FSP_ENTER(...) \
NTSTATUS Result = STATUS_SUCCESS; FSP_ENTER_(__VA_ARGS__)
#define FSP_LEAVE(fmt, ...) \
FSP_LEAVE_(" = %#lx", (long)Result, fmt, __VA_ARGS__); return Result
#define FSP_ENTER_BOOL(...) \
BOOLEAN Result = TRUE; FSP_ENTER_(__VA_ARGS__)
#define FSP_LEAVE_BOOL(fmt, ...) \
FSP_LEAVE_(" = %d", (int)Result, fmt, __VA_ARGS__); return Result
#define FSP_ENTER_VOID(...) \
FSP_ENTER_(__VA_ARGS__)
#define FSP_LEAVE_VOID(fmt, ...) \
FSP_LEAVE_("", 0, fmt, __VA_ARGS__)
#define FSP_RETURN(...) \
do \
{ \
__VA_ARGS__; \
goto fsp_leave_label; \
} while (0,0)
/* driver major functions */ /* driver major functions */
DRIVER_DISPATCH FspCleanup; DRIVER_DISPATCH FspCleanup;
DRIVER_DISPATCH FspClose; DRIVER_DISPATCH FspClose;
@ -53,4 +99,7 @@ FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
/* extern */ /* extern */
extern PDEVICE_OBJECT FspDeviceObject; extern PDEVICE_OBJECT FspDeviceObject;
/* disable warnings */
#pragma warning(disable:4100) /* unreferenced formal parameter */
#endif #endif

View File

@ -19,12 +19,11 @@ FspQueryEa(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -32,10 +31,9 @@ FspSetEa(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -24,16 +24,9 @@ FspFastIoCheckIfPossible(
_In_ PDEVICE_OBJECT DeviceObject _In_ PDEVICE_OBJECT DeviceObject
) )
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER_BOOL(PAGED_CODE());
UNREFERENCED_PARAMETER(FileOffset);
UNREFERENCED_PARAMETER(Length);
UNREFERENCED_PARAMETER(Wait);
UNREFERENCED_PARAMETER(LockKey);
UNREFERENCED_PARAMETER(CheckForReadOperation);
UNREFERENCED_PARAMETER(IoStatus);
UNREFERENCED_PARAMETER(DeviceObject);
PAGED_CODE(); Result = FALSE;
return FALSE; FSP_LEAVE_BOOL("", 0);
} }

View File

@ -19,12 +19,11 @@ FspQueryInformation(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -32,10 +31,9 @@ FspSetInformation(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspFlushBuffers(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspFileSystemControl(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspLockControl(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspRead(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -26,18 +26,18 @@ VOID
FspAcquireFileForNtCreateSection( FspAcquireFileForNtCreateSection(
_In_ PFILE_OBJECT FileObject) _In_ PFILE_OBJECT FileObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER_VOID(PAGED_CODE());
PAGED_CODE(); FSP_LEAVE_VOID("", 0);
} }
VOID VOID
FspReleaseFileForNtCreateSection( FspReleaseFileForNtCreateSection(
_In_ PFILE_OBJECT FileObject) _In_ PFILE_OBJECT FileObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER_VOID(PAGED_CODE());
PAGED_CODE(); FSP_LEAVE_VOID("", 0);
} }
NTSTATUS NTSTATUS
@ -47,14 +47,11 @@ FspAcquireForModWrite(
_Out_ PERESOURCE *ResourceToRelease, _Out_ PERESOURCE *ResourceToRelease,
_In_ PDEVICE_OBJECT DeviceObject) _In_ PDEVICE_OBJECT DeviceObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(EndingOffset);
UNREFERENCED_PARAMETER(ResourceToRelease);
UNREFERENCED_PARAMETER(DeviceObject);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -63,13 +60,11 @@ FspReleaseForModWrite(
_In_ PERESOURCE ResourceToRelease, _In_ PERESOURCE ResourceToRelease,
_In_ PDEVICE_OBJECT DeviceObject) _In_ PDEVICE_OBJECT DeviceObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(ResourceToRelease);
UNREFERENCED_PARAMETER(DeviceObject);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -77,12 +72,11 @@ FspAcquireForCcFlush(
_In_ PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
_In_ PDEVICE_OBJECT DeviceObject) _In_ PDEVICE_OBJECT DeviceObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(DeviceObject);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -90,10 +84,9 @@ FspReleaseForCcFlush(
_In_ PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
_In_ PDEVICE_OBJECT DeviceObject) _In_ PDEVICE_OBJECT DeviceObject)
{ {
UNREFERENCED_PARAMETER(FileObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(DeviceObject);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -19,12 +19,11 @@ FspQuerySecurity(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -32,10 +31,9 @@ FspSetSecurity(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspShutdown(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -19,12 +19,11 @@ FspQueryVolumeInformation(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }
NTSTATUS NTSTATUS
@ -32,10 +31,9 @@ FspSetVolumeInformation(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }

View File

@ -17,10 +17,9 @@ FspWrite(
_In_ PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
_In_ PIRP Irp) _In_ PIRP Irp)
{ {
UNREFERENCED_PARAMETER(DeviceObject); FSP_ENTER(PAGED_CODE());
UNREFERENCED_PARAMETER(Irp);
PAGED_CODE(); Result = STATUS_NOT_IMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; FSP_LEAVE("", 0);
} }