IopInitCrashDumpRegCallback
NTSTATUS __stdcall IopInitCrashDumpRegCallback(
PWCHAR ValueName,
UINT64 ValueType,
PVOID ValueData,
UINT64 ValueLength,
PVOID Context,
PVOID EntryContext){
_BYTE *v6;
INT64 v7;
UINT64 FileAttributes;
UINT64 ShareAccess;
UINT64 Disposition;
UINT64 CreateOptions;
UINT64 v13;
UINT64 Options;
_UNICODE_STRING DestinationString;
_IO_STATUS_BLOCK IoStatusBlock;
_UNICODE_STRING PagingFileName;
_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( RtlInitUnicodeStringEx(&DestinationString, (WCHAR *)ValueData) >= 0 )
{
ObjectAttributes.RootDirectory = 0i64;
LODWORD(Options) = 274;
LODWORD(v13) = 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,
v13,
CreateFileTypeNone,
0i64,
Options) >= 0 )
{
ExAcquireResourceExclusiveLite((UINT64)&stru_140C452E0 + 6976, 1, v7);
PagingFileName = DestinationString;
if( IopInitializeCrashDump(FileHandle, &PagingFileName) )
*v6 = 1;
ExReleaseResourceLite((PERESOURCE)((char *)&stru_140C452E0 + 6976));
NtClose((UINT64)FileHandle);
}
}
}
}
}
}
}
return 0;
}Referenced by:
No references.