Мне нужно понять только 1 единственную инструкцию и, соответственно, мне нужно обобщить вещи.
Мне нужно передать структуры (объекты пользовательских типов данных) во время выполнения, используя следующий код сборки.
Где ниже указан тип данных, определяемый пользователем, а именно WESContext :
typedef struct CWESContext
{
BSTR UserName;
BSTR MachineIP;
BSTR Certificate;
BSTR BrowserClienthandle;//Its the handle of the BrowserClient or Java Application Level Object
BSTR SessionID;
BSTR TaskID;// name of the original task
long LocaleID;//The location of the ultimate Caller
long FeatureID;//The feature ID mapping to some feature available in WESFW
long SessionTypeID;//Itmay be; Browser CLient Session, OPC Client Session, Authenticated OPC Clients session(as they have more rights), WESFWSystemClient.
SYSTEMTIME TimeStamp;//the time the original task was executed
DWORD Priority; //task priority of the original task
struct WESProductCategory
{
BSTR ProductCategoryName;
int serialNo;
struct WESDimensions
{
int weight;
struct WESVolume
{
int length;
int heigth;
int width;
} oVolume;
BSTR tempHeight;
BSTR otherUnknownDimensions;
} oDimensions;
} oWESProductCategory;
} CWESContext;
Я создал блок достаточного размера WESContext и заполнил его образцами данных.
int sizeOfWESContext = sizeof(CWESContext);
void *pWESContext = malloc(sizeOfWESContext);
void *pGenericPtr = pWESContext;
memset(pWESContext,0,sizeOfWESContext);
BSTR *bstrUserName = (BSTR*)pGenericPtr;
*bstrUserName = SysAllocString(CT2OLE(CA2T(results.at(0).c_str())));
bstrUserName++;
pGenericPtr = bstrUserName;
BSTR *bstrMachineIp = (BSTR*)pGenericPtr;
*bstrMachineIp = SysAllocString(CT2OLE(CA2T(results.at(1).c_str())));
bstrMachineIp++;
pGenericPtr = bstrMachineIp;
BSTR *bstrCertificate = (BSTR*)pGenericPtr;
*bstrCertificate = SysAllocString(CT2OLE(CA2T(results.at(2).c_str())));
bstrCertificate++;
pGenericPtr = bstrCertificate;
.....................
so on so forth...............
Если я вызову это, передав это как объект:
Обычный вызов: MyCallableMethodUDT(((CWESContext)pWESContext));
Теперь, после сборки, я просто вытащил из представления Dissasembly Visual Studio во время отладки.
mov esi,dword ptr [pWESContext]
sub esp,58h
mov ecx,16h
mov edi,esp
rep movs dword ptr es:[edi],dword ptr [esi]
Мне просто нужно понять 3-ю строку ..
ПОСКОЛЬКУ я увеличиваю количество участников внутри своей пользовательской структуры (т.е. здесь WESContext), она увеличивается, но я не могу сделать вывод, как она увеличивается....? Мне нужно сгенерировать эту инструкцию, чтобы каким бы ни был объект, каким бы ни был его размер и какие бы данные он ни содержал... он должен пройти, вызвав его с написанием инструкции по сборке, как написано выше.
С уважением, Усман.