| 2654 | } |
| 2655 | |
| 2656 | INT |
| 2657 | Ext2QueryDrvVersion( |
| 2658 | CHAR * Version, |
| 2659 | CHAR * Date, |
| 2660 | CHAR * Time |
| 2661 | ) |
| 2662 | { |
| 2663 | EXT2_VOLUME_PROPERTY_VERSION EVPV; |
| 2664 | NT::NTSTATUS status; |
| 2665 | HANDLE handle = NULL; |
| 2666 | NT::IO_STATUS_BLOCK iosb; |
| 2667 | INT rc = 0; |
| 2668 | |
| 2669 | memset(&EVPV, 0, sizeof(EXT2_VOLUME_PROPERTY_VERSION)); |
| 2670 | EVPV.Magic = EXT2_VOLUME_PROPERTY_MAGIC; |
| 2671 | EVPV.Command = APP_CMD_QUERY_VERSION; |
| 2672 | EVPV.Flags |= EXT2_FLAG_VP_SET_GLOBAL; |
| 2673 | |
| 2674 | status = Ext2Open("\\DosDevices\\Ext2Fsd", |
| 2675 | &handle, EXT2_DESIRED_ACCESS); |
| 2676 | if (!NT_SUCCESS(status)) { |
| 2677 | rc = -1; |
| 2678 | goto errorout; |
| 2679 | } |
| 2680 | |
| 2681 | status = NT::ZwDeviceIoControlFile( |
| 2682 | handle, NULL, NULL, NULL, &iosb, |
| 2683 | IOCTL_APP_VOLUME_PROPERTY, |
| 2684 | &EVPV, sizeof(EXT2_VOLUME_PROPERTY_VERSION), |
| 2685 | &EVPV, sizeof(EXT2_VOLUME_PROPERTY_VERSION) |
| 2686 | ); |
| 2687 | |
| 2688 | if (NT_SUCCESS(status)) { |
| 2689 | strncpy(Version, EVPV.Version, 0x1B); |
| 2690 | strncpy(Date, EVPV.Date, 0x1F); |
| 2691 | strncpy(Time, EVPV.Time, 0x1F); |
| 2692 | } |
| 2693 | |
| 2694 | rc = NT_SUCCESS(status); |
| 2695 | |
| 2696 | errorout: |
| 2697 | |
| 2698 | Ext2Close(&handle); |
| 2699 | |
| 2700 | return rc; |
| 2701 | } |
| 2702 | |
| 2703 | BOOL |
| 2704 | Ext2SetGlobalProperty ( |
no test coverage detected