@@ -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