먼저 GUID를 만드는 함수는 저번에 설명한바와 같이 CoCreateGuid()가 있다. 그리고 이렇게 생성된 GUID(128bit)를 우리가 알아볼수 있는 문자열로 바꾸는 함수가 StringFromGUID2()이다. int StringFromGUID2(REFGUID rguid, LPOLESTR lpsz, int cbMax); REFGUID rguid : 입력될 GUID 구조체의 포인터 LPOLESTR lpsz : 리턴될 OLECHAR (미리 버퍼를 할당해야한다.) int cbMax : lpsz 에 할당된 버퍼의 크기 위함수를 이용하여 우리가 임의로 만든 GUID를 String으로 바꾸어 출력해 보자. GUID guid; // GUID가 저장될 구조체 wchar_t wszCLSID[129]; // GUID의 문자열이 저장될 구조체 CoCreateGuid(&guid); // GUID 생성 StringFromGUID2(guid, wszCLSID, 128); // 문자열로 변환 USES_CONVERSION; OutputDebugString(OLE2A(wszCLSID)); // 출력결과: {7DD22961-78EE-4B66-8766-F6B388F6B9DD} 위와 같이 "{}"가 붙어 있음에 주의하자! 다시 이러한 GUID문자열을 GUID 구조체로 바꿔보자. 이러한 기능을 수행하는 함수가 CLSIDFromString()이다. HRESULT CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid); LPOLESTR lpsz : OLECHAR로 입력된 문자열 LPCLSID pclsid : 리턴될 GUID 구초체의 포인터 다음과 같이 문자열을 변환시켜 보겠다. CLSID clsid; USES_CONVERSION; CLSIDFromString(A2OLE("{DC582E1F-35DD-4b3e-9D0C-E78DFF487131}"), &clsid); example.. CLSID pclsid; OLECHAR* pszYourGUID = L"D30C1661-CDAF-11D0-8A3E-00C04FC9E26E" |
코드/c/c++