IopInitCrashDumpRegCallback
NTSTATUS __stdcall IopInitCrashDumpRegCallback(
PWCHAR ValueName,
UINT64 ValueType,
PVOID ValueData,
UINT64 ValueLength,
PVOID Context,
PVOID EntryContext){
_BYTE *v6;
UINT64 FileAttributes;
UINT64 ShareAccess;
UINT64 Disposition;
UINT64 CreateOptions;
UINT64 v12;
UINT64 Options;
struct _UNICODE_STRING DestinationString;
struct _IO_STATUS_BLOCK IoStatusBlock;
UNICODE_STRING PagingFileName;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
void *FileHandle;
FileHandle = 0i64;
*(&ObjectAttributes.Length + 1) = 0;
*(&ObjectAttributes.Attributes + 1) = 0;
v6 = EntryContext;
DestinationString = 0i64;
IoStatusBlock = 0i64;
if( EntryContext )
{
if( !*(_BYTE *)EntryContext )
{
if( ValueData )
{
if( (_DWORD)ValueLength )
{
if( Context )
{
if( (int)RtlInitUnicodeStringEx(&DestinationString, (WCHAR *)ValueData) >= 0 )
{
ObjectAttributes.RootDirectory = 0i64;
LODWORD(Options) = 274;
LODWORD(v12) = 0;
LODWORD(CreateOptions) = 32776;
LODWORD(Disposition) = 1;
LODWORD(ShareAccess) = 2;
LODWORD(FileAttributes) = 6;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 64;
ObjectAttributes.ObjectName = &DestinationString;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
if( IoCreateFile(
&FileHandle,
0xC0100000ui64,
&ObjectAttributes,
&IoStatusBlock,
0i64,
FileAttributes,
ShareAccess,
Disposition,
CreateOptions,
0i64,
v12,
CreateFileTypeNone,
0i64,
Options) >= 0 )
{
ExAcquireResourceExclusiveLite(&IopCrashDumpLock, 1u);
PagingFileName = DestinationString;
if( IopInitializeCrashDump(FileHandle, &PagingFileName) )
*v6 = 1;
ExReleaseResourceLite(&IopCrashDumpLock);
NtClose(FileHandle);
}
}
}
}
}
}
}
return 0;
}Referenced by:
No references.