Skip to content

Commit acdfe59

Browse files
committed
Move WHEA_ERROR_PACKET out of NativeMethods and refactor
1 parent 3ed2d71 commit acdfe59

File tree

7 files changed

+507
-393
lines changed

7 files changed

+507
-393
lines changed

src/DecodeWheaRecord/Decoder.cs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ public bool Decode() {
107107
section = MarshalWheaRecord(typeof(MU_TELEMETRY_SECTION), ref _recordBytes, ref _recordOffset, out bytesMarshalled);
108108
break;
109109
case var sectionGuid when sectionGuid == WHEA_ERROR_PACKET_SECTION_GUID:
110-
var errPktType = GetErrorPacketVersion(sectionDsc);
111-
section = MarshalWheaRecord(errPktType, ref _recordBytes, ref _recordOffset, out bytesMarshalled);
110+
section = WHEA_ERROR_PACKET.CreateBySignature(recordAddr, sectionDsc);
111+
_recordOffset += (uint)section.GetNativeSize();
112112
break;
113113
case var sectionGuid when sectionGuid == RECOVERY_INFO_SECTION_GUID:
114114
section = MarshalWheaRecord(typeof(WHEA_ERROR_RECOVERY_INFO_SECTION), ref _recordBytes, ref _recordOffset, out bytesMarshalled);
@@ -172,26 +172,6 @@ public bool Decode() {
172172
return true;
173173
}
174174

175-
private Type GetErrorPacketVersion(WHEA_ERROR_RECORD_SECTION_DESCRIPTOR sectionDsc) {
176-
if (sectionDsc.SectionOffset + 4 > _recordBytes.Length) {
177-
// TODO
178-
}
179-
180-
var errPktSigOffset = sectionDsc.SectionOffset;
181-
byte[] errPktSigBytes =
182-
{ _recordBytes[errPktSigOffset], _recordBytes[errPktSigOffset + 1], _recordBytes[errPktSigOffset + 2], _recordBytes[errPktSigOffset + 3] };
183-
var errPktSig = Encoding.ASCII.GetString(errPktSigBytes);
184-
185-
switch (errPktSig) {
186-
case WHEA_ERROR_PACKET_V1_SIGNATURE:
187-
return typeof(WHEA_ERROR_PACKET_V1);
188-
case WHEA_ERROR_PACKET_V2_SIGNATURE:
189-
return typeof(WHEA_ERROR_PACKET_V2);
190-
default:
191-
return null;
192-
}
193-
}
194-
195175
public bool Validate() {
196176
if (Header.Length != _bytesProcessed) {
197177
var msg = $"[{StructureName}] Header indicates error record contains {Header.Length} bytes but processed {_bytesProcessed} bytes.";

0 commit comments

Comments
 (0)