1022{
1024
1028
1029 WCHAR TmpBuffer[11];
1030 UCHAR OemBuffer[11];
1034
1036
1038
1039
1040
1041
1042
1046
1047
1048
1049
1050
1052
1054 }
1055
1056
1057
1058
1059
1060 OemLabel.Buffer = (
PCHAR)&OemBuffer[0];
1061 OemLabel.Length = 0;
1062 OemLabel.MaximumLength = 11;
1063
1067
1068
1069
1070
1071
1072
1074
1076
1078 }
1079
1080
1081
1082
1083
1084 if (OemLabel.Length > 0) {
1085
1088
1089
1090
1091
1092
1093 for (
i = 0;
i < (
ULONG)OemLabel.Length;
i += 1 ) {
1094
1096
1099 continue;
1100 }
1101
1103 (OemLabel.Buffer[
i] ==
'.')) {
1104
1106 }
1107
1108
1109
1110
1111
1112 if (OemLabel.Buffer[
i] ==
' ' &&
1115 } else {
1117 }
1118 }
1119
1121 OemLabel.Length = LastSpaceIndex;
1122 }
1123 }
1124
1125
1126
1127
1128
1131 UpcasedLabel.
Buffer = &TmpBuffer[0];
1132
1134 &OemLabel,
1136
1138
1140
1142 }
1143
1145
1146
1147
1148
1149
1150
1152
1154
1155
1156
1157
1158
1159
1160 if (OemLabel.Length > 0) {
1161
1162
1163
1164
1165
1166 if ((
UCHAR)OemLabel.Buffer[0] == 0xe5) {
1167
1169 }
1170
1171
1172
1173
1174
1175 FatLocateVolumeLabel( IrpContext,
1178 &DirentBcb,
1180
1181
1182
1183
1184
1185
1186
1188
1191 1,
1193
1194 FatPrepareWriteDirectoryFile( IrpContext,
1198 &DirentBcb,
1199#ifndef __REACTOS__
1203#endif
1207
1209
1210 } else {
1211
1212
1213
1214
1215
1216 FatSetDirtyBcb( IrpContext, DirentBcb,
Vcb,
TRUE );
1217 }
1218
1219
1220
1221
1222
1225 &OemLabel );
1226
1227
1228
1229
1230
1231
1234
1235
1236
1237
1238
1242
1243 Vcb->Vpb->VolumeLabelLength = UpcasedLabel.
Length;
1244
1245 } else {
1246
1247
1248
1249
1250
1251
1252 FatLocateVolumeLabel( IrpContext,
1255 &DirentBcb,
1257
1258
1259
1260
1261
1263
1265 }
1266
1267
1268
1269
1270
1272
1273 NT_ASSERT( (
Vcb->RootDcb->Specific.Dcb.UnusedDirentVbo == 0xffffffff) ||
1276 1 ) );
1277
1280 1 );
1281
1282 FatSetDirtyBcb( IrpContext, DirentBcb,
Vcb,
TRUE );
1283
1284
1285
1286
1287
1288
1291
1292
1293
1294
1295
1296 Vcb->Vpb->VolumeLabelLength = 0;
1297 }
1298
1300
1303
1305
1307
1308 DebugTrace(-1,
Dbg,
"FatSetFsALabelInfo -> STATUS_SUCCESS\n", 0);
1310
1312}
_In_ PFCB _In_ PDIRENT_ENUM_CONTEXT _Inout_ PDIRENT Dirent
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR)
#define FAT_DIRENT_REALLY_0E5
#define FAT_DIRENT_DELETED
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
VOID FatUnpinRepinnedBcbs(IN PIRP_CONTEXT IrpContext)
VOID FatConstructLabelDirent(IN PIRP_CONTEXT IrpContext, IN OUT PDIRENT Dirent, IN POEM_STRING Label)
#define FatUnpinBcb(IRPCONTEXT, BCB)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
#define FsRtlIsAnsiCharacterLegalFat(C, WILD)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING *, const UNICODE_STRING *, BOOLEAN)
NTSTATUS NTAPI RtlOemStringToCountedUnicodeString(IN OUT PUNICODE_STRING UniDest, IN PCOEM_STRING OemSource, IN BOOLEAN AllocateDestinationString)
#define STATUS_INVALID_VOLUME_LABEL