Seite 1 von 1

C Structure -> PB Structure

Verfasst: 18.04.2011 17:28
von Mok
Hallo!
Nachdem ich wieder ein paar Definitionslücken in der PB-integrierten WinAPI gefunden habe, hab ich mich einfach mal rangemacht, die Structs und Enums von Hand zu übersetzen, doch bei einer Struct in einer StructUnion bleib ich stecken.

Code: Alles auswählen

struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
  ULONG_PTR                      ProcessorMask;
  LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
  union {
    struct {
      BYTE Flags;
    } ProcessorCore;
    struct {
      DWORD NodeNumber;
    } NumaNode;
    CACHE_DESCRIPTOR Cache;
    ULONGLONG        Reserved[2];
  } ;
}

struct _CACHE_DESCRIPTOR {
  BYTE                 Level;
  BYTE                 Associativity;
  WORD                 LineSize;
  DWORD                Size;
  PROCESSOR_CACHE_TYPE Type;
}
Außerdem: Gibt es eine möglichkeit, typisierte Enumerationen in PB zu machen?

Code: Alles auswählen

enum _PROCESSOR_CACHE_TYPE {
  CacheUnified,
  CacheInstruction,
  CacheData,
  CacheTrace 
}

enum _LOGICAL_PROCESSOR_RELATIONSHIP {
  RelationProcessorCore,
  RelationNumaNode,
  RelationCache,
  RelationProcessorPackage,
  RelationGroup,
  RelationAll                = 0xffff 
}
Voraus schon mal danke! :wink:
Gruß, Mok.

Re: C Structure -> PB Structure

Verfasst: 18.04.2011 18:50
von NicTheQuick
Die Struktur würde ich wie folgt übersetzen:

Code: Alles auswählen

Structure ProcessorCore
	Flags.b
EndStructure

Structure NumaNode
	NodeNumber.l
EndStructure

Structure _CACHE_DESCRIPTOR
	Level.b
	Associativity.b
	LineSize.w
	Size.l
	Type.PROCESSOR_CACHE_TYPE
EndStructure

Structure _SYSTEM_LOGICAL_PROCESSOR_INFORMATION
	*ProcessorMask.Long
	RelationShip.LOGICAL_PROCESSOR_RELATIONSHIP
	StructureUnion
		ProcessorCore.ProcessorCore
		NumaNode.NumaNode
	EndStructureUnion
	Cache.CACHE_DESCRIPTOR
	Reserved.i[2]
EndStructure
Und wegen der Frage mit den Enums:
Nein, Typisierungen für Enums gibt es in PB nicht.