Etwa so:
Delphi-Quellcode:
type
PWinTrustData = ^TWinTrustData;
PWINTRUST_DATA = PWinTrustData;
{$EXTERNALSYM PWINTRUST_DATA}
_WINTRUST_DATA = record
cbStruct : DWORD; // SizeOf(TWinTrustData)
pPolicyCallbackData: Pointer;
pSIPClientData : Pointer;
dwUIChoice : DWORD; // WTD_UI_*
fdwRevocationChecks: DWORD; // WTD_REVOKE_*
case dwUnionChoice : DWORD of
WTD_CHOICE_FILE : (pFile : ^TWinTrustFileInfo);
WTD_CHOICE_CATALOG: (pCatalog: ^TWinTrustCatalogInfo);
WTD_CHOICE_BLOB : (pBlob : ^TWinTrustBlobInfo);
WTD_CHOICE_SIGNER : (pSgnr : ^TWinTrustSgnrInfo);
WTD_CHOICE_CERT : (pCert : ^TWinTrustCertInfo;
{ end; }
dwStateAction: DWORD; // Reserved = 0
hWVTStateData: THandle); // Reserved = THandle(nil)
end;
{$EXTERNALSYM _WINTRUST_DATA}
TWinTrustData = _WINTRUST_DATA;
WINTRUST_DATA = _WINTRUST_DATA;
{$EXTERNALSYM WINTRUST_DATA}
Falls die Zeiger in der Union jemals nil sein können, sollte man ^TWinTrustXxx in PWinTrustXxx ändern (um den Vergleich auf nil zu vereinfachen).