From 6c75215bb3473b984b8667a9589b39dcc19eade0 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Tue, 21 Aug 2018 07:05:40 +0200 Subject: [PATCH] [BTRFS] Fix booting with runtime checks --- drivers/filesystems/btrfs/btrfs.c | 65 +++++++++++++++++++++++++++ drivers/filesystems/btrfs/btrfs_drv.h | 24 +++++----- drivers/filesystems/btrfs/create.c | 2 +- drivers/filesystems/btrfs/devctrl.c | 2 +- drivers/filesystems/btrfs/dirctrl.c | 2 +- drivers/filesystems/btrfs/fileinfo.c | 8 ++-- drivers/filesystems/btrfs/pnp.c | 2 +- drivers/filesystems/btrfs/read.c | 2 +- drivers/filesystems/btrfs/security.c | 4 +- drivers/filesystems/btrfs/write.c | 2 +- 10 files changed, 89 insertions(+), 24 deletions(-) diff --git a/drivers/filesystems/btrfs/btrfs.c b/drivers/filesystems/btrfs/btrfs.c index 05db8c0e293..bdc29881459 100644 --- a/drivers/filesystems/btrfs/btrfs.c +++ b/drivers/filesystems/btrfs/btrfs.c @@ -464,7 +464,11 @@ BOOL get_xattr(_In_ _Requires_lock_held_(_Curr_->tree_lock) device_extension* Vc _Dispatch_type_(IRP_MJ_CLOSE) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_close(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_close(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; PIO_STACK_LOCATION IrpSp; device_extension* Vcb = DeviceObject->DeviceExtension; @@ -513,7 +517,11 @@ end: _Dispatch_type_(IRP_MJ_FLUSH_BUFFERS) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_flush_buffers(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_flush_buffers(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp ); PFILE_OBJECT FileObject = IrpSp->FileObject; @@ -708,7 +716,11 @@ static BOOL lie_about_fs_type() { _Dispatch_type_(IRP_MJ_QUERY_VOLUME_INFORMATION) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_query_volume_information(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_query_volume_information(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif PIO_STACK_LOCATION IrpSp; NTSTATUS Status; ULONG BytesCopied = 0; @@ -1147,7 +1159,11 @@ end: _Dispatch_type_(IRP_MJ_SET_VOLUME_INFORMATION) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_set_volume_information(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_set_volume_information(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); device_extension* Vcb = DeviceObject->DeviceExtension; NTSTATUS Status; @@ -2129,7 +2145,11 @@ NTSTATUS delete_fileref(_In_ file_ref* fileref, _In_opt_ PFILE_OBJECT FileObject _Dispatch_type_(IRP_MJ_CLEANUP) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_cleanup(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_cleanup(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); PFILE_OBJECT FileObject = IrpSp->FileObject; @@ -4768,7 +4788,11 @@ static NTSTATUS verify_volume(_In_ PDEVICE_OBJECT devobj) { _Dispatch_type_(IRP_MJ_FILE_SYSTEM_CONTROL) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_file_system_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_file_system_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif PIO_STACK_LOCATION IrpSp; NTSTATUS Status; device_extension* Vcb = DeviceObject->DeviceExtension; @@ -4849,7 +4873,11 @@ end: _Dispatch_type_(IRP_MJ_LOCK_CONTROL) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_lock_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_lock_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); fcb* fcb = IrpSp->FileObject->FsContext; @@ -4888,7 +4916,11 @@ exit: _Dispatch_type_(IRP_MJ_SHUTDOWN) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_shutdown(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_shutdown(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; BOOL top_level; device_extension* Vcb = DeviceObject->DeviceExtension; @@ -5010,7 +5042,11 @@ end: _Dispatch_type_(IRP_MJ_POWER) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_power(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_power(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; device_extension* Vcb = DeviceObject->DeviceExtension; BOOL top_level; @@ -5051,7 +5087,11 @@ exit: _Dispatch_type_(IRP_MJ_SYSTEM_CONTROL) _Function_class_(DRIVER_DISPATCH) +#ifdef __REACTOS__ +static NTSTATUS NTAPI drv_system_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#else static NTSTATUS drv_system_control(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) { +#endif NTSTATUS Status; device_extension* Vcb = DeviceObject->DeviceExtension; BOOL top_level; @@ -5580,6 +5620,30 @@ NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING Regi DriverObject->DriverExtension->AddDevice = AddDevice; +#ifdef __REACTOS__ + DriverObject->MajorFunction[IRP_MJ_CREATE] = drv_create; + DriverObject->MajorFunction[IRP_MJ_CLOSE] = drv_close; + DriverObject->MajorFunction[IRP_MJ_READ] = drv_read; + DriverObject->MajorFunction[IRP_MJ_WRITE] = drv_write; + DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = drv_query_information; + DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = drv_set_information; + DriverObject->MajorFunction[IRP_MJ_QUERY_EA] = drv_query_ea; + DriverObject->MajorFunction[IRP_MJ_SET_EA] = drv_set_ea; + DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = drv_flush_buffers; + DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = drv_query_volume_information; + DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = drv_set_volume_information; + DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = drv_directory_control; + DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = drv_file_system_control; + DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = drv_device_control; + DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = drv_shutdown; + DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = drv_lock_control; + DriverObject->MajorFunction[IRP_MJ_CLEANUP] = drv_cleanup; + DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] = drv_query_security; + DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = drv_set_security; + DriverObject->MajorFunction[IRP_MJ_POWER] = drv_power; + DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = drv_system_control; + DriverObject->MajorFunction[IRP_MJ_PNP] = drv_pnp; +#else DriverObject->MajorFunction[IRP_MJ_CREATE] = (PDRIVER_DISPATCH)drv_create; DriverObject->MajorFunction[IRP_MJ_CLOSE] = (PDRIVER_DISPATCH)drv_close; DriverObject->MajorFunction[IRP_MJ_READ] = (PDRIVER_DISPATCH)drv_read; @@ -5602,6 +5666,7 @@ NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING Regi DriverObject->MajorFunction[IRP_MJ_POWER] = (PDRIVER_DISPATCH)drv_power; DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = (PDRIVER_DISPATCH)drv_system_control; DriverObject->MajorFunction[IRP_MJ_PNP] = (PDRIVER_DISPATCH)drv_pnp; +#endif init_fast_io_dispatch(&DriverObject->FastIoDispatch); diff --git a/drivers/filesystems/btrfs/btrfs_drv.h b/drivers/filesystems/btrfs/btrfs_drv.h index e5efc86b790..857555f7551 100644 --- a/drivers/filesystems/btrfs/btrfs_drv.h +++ b/drivers/filesystems/btrfs/btrfs_drv.h @@ -1282,7 +1282,7 @@ void free_write_data_stripes(write_data_context* wtc); _Dispatch_type_(IRP_MJ_WRITE) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_write(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_write(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); _Requires_lock_held_(c->lock) _When_(return != 0, _Releases_lock_(c->lock)) @@ -1304,7 +1304,7 @@ void add_extent(_In_ fcb* fcb, _In_ LIST_ENTRY* prevextle, _In_ __drv_aliasesMem _Dispatch_type_(IRP_MJ_DIRECTORY_CONTROL) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_directory_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_directory_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); ULONG get_reparse_tag(device_extension* Vcb, root* subvol, UINT64 inode, UINT8 type, ULONG atts, BOOL lxss, PIRP Irp); @@ -1312,11 +1312,11 @@ ULONG get_reparse_tag(device_extension* Vcb, root* subvol, UINT64 inode, UINT8 t _Dispatch_type_(IRP_MJ_QUERY_SECURITY) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_query_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); _Dispatch_type_(IRP_MJ_SET_SECURITY) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_set_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); void fcb_get_sd(fcb* fcb, struct _fcb* parent, BOOL look_for_xattr, PIRP Irp); void add_user_mapping(WCHAR* sidstring, ULONG sidstringlength, UINT32 uid); @@ -1330,19 +1330,19 @@ void find_gid(struct _fcb* fcb, struct _fcb* parfcb, PSECURITY_SUBJECT_CONTEXT s _Dispatch_type_(IRP_MJ_SET_INFORMATION) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_set_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); _Dispatch_type_(IRP_MJ_QUERY_INFORMATION) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_query_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); _Dispatch_type_(IRP_MJ_QUERY_EA) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_query_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); _Dispatch_type_(IRP_MJ_SET_EA) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_set_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); BOOL has_open_children(file_ref* fileref); NTSTATUS stream_set_end_of_file_information(device_extension* Vcb, UINT16 end, fcb* fcb, file_ref* fileref, BOOL advance_only); @@ -1360,7 +1360,7 @@ NTSTATUS delete_reparse_point(PDEVICE_OBJECT DeviceObject, PIRP Irp); _Dispatch_type_(IRP_MJ_CREATE) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_create(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_create(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); NTSTATUS open_fileref(_Requires_lock_held_(_Curr_->tree_lock) _Requires_exclusive_lock_held_(_Curr_->fcb_lock) _In_ device_extension* Vcb, _Out_ file_ref** pfr, _In_ PUNICODE_STRING fnus, _In_opt_ file_ref* related, _In_ BOOL parent, _Out_opt_ USHORT* parsed, _Out_opt_ ULONG* fn_offset, _In_ POOL_TYPE pooltype, @@ -1412,7 +1412,7 @@ NTSTATUS update_dev_item(device_extension* Vcb, device* device, PIRP Irp); _Dispatch_type_(IRP_MJ_READ) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_read(PDEVICE_OBJECT DeviceObject, PIRP Irp); +NTSTATUS NTAPI drv_read(PDEVICE_OBJECT DeviceObject, PIRP Irp); NTSTATUS read_data(_In_ device_extension* Vcb, _In_ UINT64 addr, _In_ UINT32 length, _In_reads_bytes_opt_(length*sizeof(UINT32)/Vcb->superblock.sector_size) UINT32* csum, _In_ BOOL is_tree, _Out_writes_bytes_(length) UINT8* buf, _In_opt_ chunk* c, _Out_opt_ chunk** pc, _In_opt_ PIRP Irp, _In_ UINT64 generation, _In_ BOOL file_read, @@ -1427,7 +1427,7 @@ void raid6_recover2(UINT8* sectors, UINT16 num_stripes, ULONG sector_size, UINT1 _Dispatch_type_(IRP_MJ_PNP) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_pnp(PDEVICE_OBJECT DeviceObject, PIRP Irp); +NTSTATUS NTAPI drv_pnp(PDEVICE_OBJECT DeviceObject, PIRP Irp); NTSTATUS pnp_surprise_removal(PDEVICE_OBJECT DeviceObject, PIRP Irp); NTSTATUS pnp_query_remove_device(PDEVICE_OBJECT DeviceObject, PIRP Irp); @@ -1492,7 +1492,7 @@ UINT8 gdiv(UINT8 a, UINT8 b); _Dispatch_type_(IRP_MJ_DEVICE_CONTROL) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_device_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +NTSTATUS NTAPI drv_device_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); // in calcthread.c diff --git a/drivers/filesystems/btrfs/create.c b/drivers/filesystems/btrfs/create.c index cd1106477bf..39fbf09240a 100644 --- a/drivers/filesystems/btrfs/create.c +++ b/drivers/filesystems/btrfs/create.c @@ -3685,7 +3685,7 @@ static BOOL has_manage_volume_privilege(ACCESS_STATE* access_state, KPROCESSOR_M _Dispatch_type_(IRP_MJ_CREATE) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_create(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_create(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; PIO_STACK_LOCATION IrpSp; device_extension* Vcb = DeviceObject->DeviceExtension; diff --git a/drivers/filesystems/btrfs/devctrl.c b/drivers/filesystems/btrfs/devctrl.c index 06e0c658f50..1953360a06c 100644 --- a/drivers/filesystems/btrfs/devctrl.c +++ b/drivers/filesystems/btrfs/devctrl.c @@ -236,7 +236,7 @@ static NTSTATUS control_ioctl(PIRP Irp) { _Dispatch_type_(IRP_MJ_DEVICE_CONTROL) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_device_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_device_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); device_extension* Vcb = DeviceObject->DeviceExtension; diff --git a/drivers/filesystems/btrfs/dirctrl.c b/drivers/filesystems/btrfs/dirctrl.c index 25c9e9cc835..64ab60f15a2 100644 --- a/drivers/filesystems/btrfs/dirctrl.c +++ b/drivers/filesystems/btrfs/dirctrl.c @@ -1003,7 +1003,7 @@ end: _Dispatch_type_(IRP_MJ_DIRECTORY_CONTROL) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_directory_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_directory_control(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { PIO_STACK_LOCATION IrpSp; NTSTATUS Status; ULONG func; diff --git a/drivers/filesystems/btrfs/fileinfo.c b/drivers/filesystems/btrfs/fileinfo.c index 9588ea177ec..1d03a669f41 100644 --- a/drivers/filesystems/btrfs/fileinfo.c +++ b/drivers/filesystems/btrfs/fileinfo.c @@ -2557,7 +2557,7 @@ end: _Dispatch_type_(IRP_MJ_SET_INFORMATION) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_set_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); device_extension* Vcb = DeviceObject->DeviceExtension; @@ -3919,7 +3919,7 @@ exit: _Dispatch_type_(IRP_MJ_QUERY_INFORMATION) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_query_information(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { PIO_STACK_LOCATION IrpSp; NTSTATUS Status; fcb* fcb; @@ -3967,7 +3967,7 @@ end: _Dispatch_type_(IRP_MJ_QUERY_EA) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_query_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; BOOL top_level; device_extension* Vcb = DeviceObject->DeviceExtension; @@ -4203,7 +4203,7 @@ typedef struct { _Dispatch_type_(IRP_MJ_SET_EA) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_set_ea(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { device_extension* Vcb = DeviceObject->DeviceExtension; NTSTATUS Status; BOOL top_level; diff --git a/drivers/filesystems/btrfs/pnp.c b/drivers/filesystems/btrfs/pnp.c index 34997cfd592..5a7e91b4105 100644 --- a/drivers/filesystems/btrfs/pnp.c +++ b/drivers/filesystems/btrfs/pnp.c @@ -491,7 +491,7 @@ static NTSTATUS pdo_pnp(PDEVICE_OBJECT pdo, PIRP Irp) { _Dispatch_type_(IRP_MJ_PNP) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_pnp(PDEVICE_OBJECT DeviceObject, PIRP Irp) { +NTSTATUS NTAPI drv_pnp(PDEVICE_OBJECT DeviceObject, PIRP Irp) { PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); device_extension* Vcb = DeviceObject->DeviceExtension; NTSTATUS Status; diff --git a/drivers/filesystems/btrfs/read.c b/drivers/filesystems/btrfs/read.c index 81fbec3d68c..4384d657846 100644 --- a/drivers/filesystems/btrfs/read.c +++ b/drivers/filesystems/btrfs/read.c @@ -3237,7 +3237,7 @@ NTSTATUS do_read(PIRP Irp, BOOLEAN wait, ULONG* bytes_read) { _Dispatch_type_(IRP_MJ_READ) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_read(PDEVICE_OBJECT DeviceObject, PIRP Irp) { +NTSTATUS NTAPI drv_read(PDEVICE_OBJECT DeviceObject, PIRP Irp) { device_extension* Vcb = DeviceObject->DeviceExtension; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); PFILE_OBJECT FileObject = IrpSp->FileObject; diff --git a/drivers/filesystems/btrfs/security.c b/drivers/filesystems/btrfs/security.c index 8ba772f1e4c..e934cb47ee8 100644 --- a/drivers/filesystems/btrfs/security.c +++ b/drivers/filesystems/btrfs/security.c @@ -578,7 +578,7 @@ static NTSTATUS get_file_security(PFILE_OBJECT FileObject, SECURITY_DESCRIPTOR* _Dispatch_type_(IRP_MJ_QUERY_SECURITY) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_query_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_query_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; SECURITY_DESCRIPTOR* sd; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); @@ -743,7 +743,7 @@ end: _Dispatch_type_(IRP_MJ_SET_SECURITY) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_set_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_set_security(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); PFILE_OBJECT FileObject = IrpSp->FileObject; diff --git a/drivers/filesystems/btrfs/write.c b/drivers/filesystems/btrfs/write.c index c3a8fb74760..7ede09ee6a9 100644 --- a/drivers/filesystems/btrfs/write.c +++ b/drivers/filesystems/btrfs/write.c @@ -4690,7 +4690,7 @@ exit: _Dispatch_type_(IRP_MJ_WRITE) _Function_class_(DRIVER_DISPATCH) -NTSTATUS drv_write(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { +NTSTATUS NTAPI drv_write(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS Status; BOOL top_level; PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); -- 2.17.1