Всем доброго! Немогу понять вот этот участок кода: Code (Text): else { PSPY_COMPLETION_CONTEXT_W2K completionContext = Context; // // We are already at passive level, so we will just call our // worker routine directly. // (completionContext->WorkItem.WorkerRoutine)(completionContext->WorkIte m.Parameter); } что означают вырожения подобного рода (completionContext->WorkItem.WorkerRoutine)(completionContext->WorkIte m.Parameter);
Вызов функции completionContext->WorkItem.WorkerRoutine() с параметром completionContext->WorkIte m.Parameter
И из C тоже Если бы это был C, я бы сказал что WorkerRoutine был объявлен примерно таким образом: void (*WorkerRoutine)(typeof (completionContext->WorkItem.Parameter));
Спасибо всем за советы, но я тут еще кое-что для себя обнаружил, немогу понять как это может быть? Code (Text): if ((devList[i] != FSDeviceObject) && (devList[i]->DeviceType == FSDeviceObject->DeviceType) && !SpyIsAttachedToDevice( devList[i], NULL )) { где PDEVICE_OBJECT FSDeviceObject; PDEVICE_OBJECT *devList; т.е. указатель на объект PDEVICE_OBJECT , тогда как как может выполниться это условие if ((devList != FSDeviceObject)??? Это все наводит меня на мысль, что в данном случае devList это уже раименнованная переменная(*devList), прав ли я?
devList имеет тип PDEVICE_OBJECT. Сравниваются переменные одинаковых типов. devList аналогично *(devList + i)