Доброго времени суток! У меня трабл, идет бсод, а почему - хз, вот код что бсодит: Код (Text): NTSTATUS FilterGetFileName ( IN PCFLT_RELATED_OBJECTS FltObjects, OUT PUNICODE_STRING FileName ) { NTSTATUS status = STATUS_SUCCESS; ULONG BufferSize; if (FltObjects == NULL) return STATUS_UNSUCCESSFUL; if (FileName == NULL) return STATUS_UNSUCCESSFUL; FltGetVolumeName( FltObjects->Volume, NULL, &BufferSize ); if (FltObjects->FileObject->RelatedFileObject != NULL) BufferSize += FltObjects->FileObject->RelatedFileObject->FileName.Length; BufferSize += FltObjects->FileObject->FileName.Length; status = InitUnicodeString( FileName, BufferSize, NonPagedPool ); if (!NT_SUCCESS( status )) { return status; } status = FltGetVolumeName( FltObjects->Volume, FileName, NULL ); if (NT_SUCCESS( status )) { if (FltObjects->FileObject->RelatedFileObject != NULL) { if (FltObjects->FileObject->RelatedFileObject->FileName.Length != 0) status = RtlAppendUnicodeStringToString( FileName, &FltObjects->FileObject->RelatedFileObject->FileName ); } if (FltObjects->FileObject->FileName.Length != 0) status = RtlAppendUnicodeStringToString( FileName, &FltObjects->FileObject->FileName ); } return status; } InitUnicodeString - моя функция которая в пуле выделяет память для строки. бсод идет на первом RtlAppendUnicodeStringToString и ошибка: CACHE_MANAGER (34) Заранее спасибо за любую помощь!
BSOD происходит когда обрабатываю IRP_MJ_SET_INFORMATION, но когда обрабатываю IRP_MJ_CREATE - то все гуд, почему так? какая разница между данными что юзаю в IRP_MJ_SET_INFORMATION и IRP_MJ_CREATE (код в двоих обработчиков одинаковый)