WdInstrInitializeInstruction
NTSTATUS __stdcall WdInstrInitializeInstruction(
_WD_INSTRUCTION *Instruction,
UINT8 Action,
UINT8 Flags,
_GEN_ADDR *Register){
unsigned __int8 BitOffset;
NTSTATUS result;
INT64 v10;
unsigned __int8 AccessSize;
unsigned int v12;
unsigned int v13;
char v14;
BitOffset = 0;
if( !Instruction )
return -1073741811;
memset(Instruction, 0i64, sizeof(_WD_INSTRUCTION));
AccessSize = 3;
if( !v14 )
AccessSize = Register->AccessSize;
LOBYTE(v10) = Register->AddressSpaceID;
result = WdHwCreateHardwareRegister(Register->Address, v10, AccessSize, &Instruction->Register);
if( result >= 0 )
{
Instruction->WatchdogAction = Action;
Instruction->InstructionFlags = Flags;
if( v14 )
{
Instruction->BitWidth = 32;
}
else
{
Instruction->BitWidth = Register->BitWidth;
BitOffset = Register->BitOffset;
}
Instruction->BitOffset = BitOffset;
Instruction->Value = v12;
Instruction->Mask = v13;
return 0;
}
return result;
}Referenced by:
HalpWdatExecuteActionBeforeInitialize
HalpWdatInitializeWdat
HalpWdatInitializeWdrt