Zugreifen auf den undurchsichtigen Zeiger in einem Ziel
Der folgende Beispielcode zeigt, wie Sie auf den undurchsichtigen Zeiger in einem Ziel zugreifen.
// Opaque Info Blob Defn
typedef struct _OPAQUE_INFO
{
ULONG Info1;
ULONG Info2;
}
OPAQUE_INFO, *POPAQUE_INFO;
PVOID OpaqueInfoSlotPointer; // Pointer to the opaque pointer slot
PVOID OpaqueInfoSlotInfo; // Information in the opaque pointer slot
POPAQUE_INFO OpaqueInfoPtr; // Pointer to opaque information
DWORD Status;
// Lock the destination in exclusive mode to sync opaque pointer access
// If you know that you will only be reading the opaque pointer
// and not modifying it, then you can use a shared lock
Status = RtmLockDestination(RtmRegHandle, DestHandle, TRUE, TRUE);
if (Status != NO_ERROR)
{
return Status;
}
// You can get a pointer to your opaque pointer slot,
// assuming that you have reserved one during registration.
Status = RtmGetOpaqueInformationPointer(RtmRegHandle,
DestHandle,
&OpaqueInfoSlotPointer);
if (Status == NO_ERROR)
{
OpaqueInfoSlotInfo = * (PVOID *) OpaqueInfoSlotPointer;
if (OpaqueInfoSlotInfo == NULL)
{
// No information set yet - create private information BLOB (if required)
OpaqueInfoPtr = (POPAQUE_INFO) malloc(OpaqueInfoSize);
if (OpaqueInfoPtr)
{
// Set certain information in the opaque information BLOB
OpaqueInfoPtr->Info1 = 1;
OpaqueInfoPtr->Info2 = 2;
* (PVOID *) OpaqueInfoSlotPointer = OpaqueInfoPtr;
}
else
{
// Already exists; do something with the opaque information
OpaqueInfoPtr = (POPAQUE_INFO) OpaqueInfoSlotInfo;
// Set certain information in the opaque information BLOB
OpaqueInfoPtr->Info1 = 3;
OpaqueInfoPtr->Info2 = 4;
}
}
}
// Unlock destination from exclusive mode that we locked earlier
Status = RtmLockDestination(RtmRegHandle, DestHandle, TRUE, FALSE);
ASSERT(Status == NO_ERROR);
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für