| 1898 | } |
| 1899 | |
| 1900 | NTSTATUS |
| 1901 | Ext2UserFsRequest (IN PEXT2_IRP_CONTEXT IrpContext) |
| 1902 | { |
| 1903 | PIRP Irp; |
| 1904 | PIO_STACK_LOCATION IoStackLocation; |
| 1905 | ULONG FsControlCode; |
| 1906 | NTSTATUS Status; |
| 1907 | |
| 1908 | ASSERT(IrpContext); |
| 1909 | |
| 1910 | ASSERT((IrpContext->Identifier.Type == EXT2ICX) && |
| 1911 | (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); |
| 1912 | |
| 1913 | Irp = IrpContext->Irp; |
| 1914 | IoStackLocation = IoGetCurrentIrpStackLocation(Irp); |
| 1915 | |
| 1916 | #ifndef _GNU_NTIFS_ |
| 1917 | FsControlCode = |
| 1918 | IoStackLocation->Parameters.FileSystemControl.FsControlCode; |
| 1919 | #else |
| 1920 | FsControlCode = ((PEXTENDED_IO_STACK_LOCATION) |
| 1921 | IoStackLocation)->Parameters.FileSystemControl.FsControlCode; |
| 1922 | #endif |
| 1923 | |
| 1924 | switch (FsControlCode) { |
| 1925 | |
| 1926 | case FSCTL_GET_REPARSE_POINT: |
| 1927 | Status = Ext2GetReparsePoint(IrpContext); |
| 1928 | break; |
| 1929 | |
| 1930 | case FSCTL_SET_REPARSE_POINT: |
| 1931 | Status = Ext2SetReparsePoint(IrpContext); |
| 1932 | break; |
| 1933 | |
| 1934 | case FSCTL_DELETE_REPARSE_POINT: |
| 1935 | Status = Ext2DeleteReparsePoint(IrpContext); |
| 1936 | break; |
| 1937 | |
| 1938 | case FSCTL_LOCK_VOLUME: |
| 1939 | Status = Ext2LockVolume(IrpContext); |
| 1940 | break; |
| 1941 | |
| 1942 | case FSCTL_UNLOCK_VOLUME: |
| 1943 | Status = Ext2UnlockVolume(IrpContext); |
| 1944 | break; |
| 1945 | |
| 1946 | case FSCTL_DISMOUNT_VOLUME: |
| 1947 | Status = Ext2DismountVolume(IrpContext); |
| 1948 | break; |
| 1949 | |
| 1950 | case FSCTL_IS_VOLUME_MOUNTED: |
| 1951 | Status = Ext2IsVolumeMounted(IrpContext); |
| 1952 | break; |
| 1953 | |
| 1954 | case FSCTL_INVALIDATE_VOLUMES: |
| 1955 | Status = Ext2InvalidateVolumes(IrpContext); |
| 1956 | break; |
| 1957 |
no test coverage detected