| 2151 | } |
| 2152 | |
| 2153 | NTSTATUS |
| 2154 | Ext2PerformRegistryVolumeParams(IN PEXT2_VCB Vcb) |
| 2155 | { |
| 2156 | NTSTATUS Status; |
| 2157 | UNICODE_STRING VolumeParams; |
| 2158 | |
| 2159 | Status = Ext2QueryVolumeParams(Vcb, &VolumeParams); |
| 2160 | if (NT_SUCCESS(Status)) { |
| 2161 | |
| 2162 | /* set Vcb settings from registery */ |
| 2163 | EXT2_VOLUME_PROPERTY3 Property; |
| 2164 | Ext2ParseRegistryVolumeParams(&VolumeParams, &Property); |
| 2165 | Ext2ProcessVolumeProperty(Vcb, &Property, sizeof(Property)); |
| 2166 | |
| 2167 | } else { |
| 2168 | |
| 2169 | /* don't support auto mount */ |
| 2170 | if (IsFlagOn(Ext2Global->Flags, EXT2_AUTO_MOUNT)) { |
| 2171 | Status = STATUS_SUCCESS; |
| 2172 | } else { |
| 2173 | Status = STATUS_UNSUCCESSFUL; |
| 2174 | goto errorout; |
| 2175 | } |
| 2176 | |
| 2177 | /* set Vcb settings from Ext2Global */ |
| 2178 | if (IsFlagOn(Ext2Global->Flags, EXT2_SUPPORT_WRITING)) { |
| 2179 | if (Vcb->IsExt3fs) { |
| 2180 | if (IsFlagOn(Ext2Global->Flags, EXT3_FORCE_WRITING)) { |
| 2181 | ClearLongFlag(Vcb->Flags, VCB_READ_ONLY); |
| 2182 | } else { |
| 2183 | SetLongFlag(Vcb->Flags, VCB_READ_ONLY); |
| 2184 | } |
| 2185 | } else { |
| 2186 | ClearLongFlag(Vcb->Flags, VCB_READ_ONLY); |
| 2187 | } |
| 2188 | } else { |
| 2189 | SetLongFlag(Vcb->Flags, VCB_READ_ONLY); |
| 2190 | } |
| 2191 | |
| 2192 | /* set the default codepage */ |
| 2193 | Vcb->Codepage.PageTable = Ext2Global->Codepage.PageTable; |
| 2194 | memcpy(Vcb->Codepage.AnsiName, Ext2Global->Codepage.AnsiName, CODEPAGE_MAXLEN); |
| 2195 | Vcb->Codepage.PageTable = Ext2Global->Codepage.PageTable; |
| 2196 | |
| 2197 | if (Vcb->bHidingPrefix = Ext2Global->bHidingPrefix) { |
| 2198 | RtlCopyMemory( Vcb->sHidingPrefix, |
| 2199 | Ext2Global->sHidingPrefix, |
| 2200 | HIDINGPAT_LEN); |
| 2201 | } else { |
| 2202 | RtlZeroMemory( Vcb->sHidingPrefix, |
| 2203 | HIDINGPAT_LEN); |
| 2204 | } |
| 2205 | |
| 2206 | if (Vcb->bHidingSuffix = Ext2Global->bHidingSuffix) { |
| 2207 | RtlCopyMemory( Vcb->sHidingSuffix, |
| 2208 | Ext2Global->sHidingSuffix, |
| 2209 | HIDINGPAT_LEN); |
| 2210 | } else { |
no test coverage detected