Инициализация const GUID * (указатель GUID) - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь инициализировать указатель GUID на значения NULL для использования с DirectX ... Я пишу парсер файлов .X.

У меня проблемы с инициализацией указателя GUID! Мне нужно сравнить тип входного GUID из файла с внутренне определенными типами шаблонов, чтобы я мог указать своей программе, что делать с информацией в «шаблоне из файла».

Вот что у меня есть:

BOOL cXMeshParser::ParseObject(LPD3DXFILEDATA pDataObj, DWORD Depth, void **data)
{

    if(pDataObj->IsReference())
        return true;

    GUID pTemplateGUID;
    memset(&pTemplateGUID, 0, sizeof(GUID));

    GUID *pCpyGUID;
    memset(&pCpyGUID, 0, sizeof(GUID));

    memcpy(&pCpyGUID, &pTemplateGUID, sizeof(GUID));

    pDataObj->GetType(pCpyGUID);
    int isEqual =0;
    isEqual = IsEqualGUID(*pCpyGUID, TID_D3DRMMesh);
    if(isEqual){

           ...
         }
}

когда я запускаю отладчик, данные в pCpyGUID неверны (не NULL)

Я использовал обычное определение GUID (GUID pTemplateGUID), чтобы попытаться скопировать GUID в const GUID * (я могу инициализировать GUID ... не GUID *) ... текущая проблема с анализатором заключается в том, что сравнение между данными шаблона и внутренним определением невозможно оценить ...

Мой вопрос:

Как написать правильную инициализацию для const GUID *?

1 Ответ

2 голосов
/ 30 января 2012

pCpyGUID - это просто указатель, что означает, что его значение является адресом.Поскольку вы не инициализировали этот адрес, он указывает на некоторую случайную ячейку памяти, которая может быть недоступна для чтения и записи.

В любом случае вы также обнуляете pTemplateGUID, а затем пытаетесь скопировать его в pCpyGUID....

Похоже, вам не нужны ни pTemplateGUID, ни pCpyGUID.

Возможно, вы захотите сделать:

GUID *pCpyGUID = &pTemplateGUID;

Таким образом, pCpyGUID указывает на pTemplateGUID.Но вам это не нужно.

Попробуйте это:

GUID templateGUID;

pDataObj->GetType(&templateGUID);
int isEqual = IsEqualGUID(templateGUID, TID_D3DRMMesh);
if(isEqual){
 ...
...