2012-01-30 2 views
0

DirectX에서 사용할 NULL 값에 대한 GUID 포인터를 초기화하려고합니다. .X 파일 파서를 작성하고 있습니다.const GUID * (GUID 포인터) 초기화

GUID 포인터를 초기화하는 데 문제가 있습니다. 내부적으로 정의 된 템플릿 유형과 파일의 입력 GUID 유형을 비교하여 내 프로그램에 '파일에서 템플릿'내의 정보를 어떻게 처리 할 수 ​​있는지 알려줄 필요가 있습니다. 내가 디버거를 실행할 때 pCpyGUID 내의 데이터가

내가 정기적 GUID 데프 (GUID pTemplateGUID)를 사용 (하지 NULL) 잘못된

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){ 

      ... 
     } 
} 

: 여기

는 내가 지금까지 무엇을 가지고 시도하고 GUID를 const GUID를 복사하려면 (나는 GUID를 inizialize 수 있습니다 ... GUID *) ... 파서의 현재 문제는 템플릿 데이터와 내부 정의 사이의 비교를 평가할 수 없다는 것입니다 ...

내 질문 :

const GUID *에 유효한 초기화를 쓰려면 어떻게해야합니까?

답변

2

pCpyGUID는 포인터 일 뿐이며 그 값은 주소입니다. 이 주소를 초기화하지 않았으므로 읽기 쉽지 않고 쓸 수없는 임의의 메모리 위치를 가리 킵니다. 당신이 pTemplateGUID 및 pCpyGUID 둘 필요가 없습니다 원하는 경우

, 당신도 제로 pTemplateGUID 다음 pCpyGUID에 복사하려고 ...

것 같습니다.

GUID *pCpyGUID = &pTemplateGUID; 

그래서 pCpyGUID 점을 pTemplateGUID에 :

당신은 아마하고 싶어. 하지만이 것은 필요하지 않습니다.

이 시도 : 당신에게 많은 감사를했다

GUID templateGUID; 

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

이 –

+0

은 다행이 일했습니다. 대답을 수락하는 것을 잊지 마세요.) – Asaf