2013-02-08 1 views
0

COM 클래스와 아무런 관계가없는 내부적으로 생성 된 GUID 중 어느 것이 올바른지 다시 한번 확인하고 싶습니다.Windows에서 UuidFromString과 CLSIDFromString간에 차이점이 있습니까?

나의 의심은 UuidFromString이지만 CLSIDFromString을 사용하는 코드를 계속 볼 수 있습니다. CLSIDFromString이 레지스트리에 나열된 COM 클래스를 열거 할 수도 있지만 이것이 올바른지 확실하지는 않다는 모호한 추억이 있습니다.

답변

1

내가 사용하는 것이 UuidFromString - CLSIDFromString에 대한 문서는 명시 적 목적은 다시 CLSIDStringFromCLSID에 의해 생성 된 문자열을 변환하는 것입니다 있다고 주장한다.

두 기능의 동작 (그리고 나는 그것이되지 않을 수 있습니다 의심 동일하다하더라도 - CLSIDFromString이 클래스는 레지스트리를 나타냅니다 REGDB_E_READREGDB 등록되지 않았거나 표시 REGDB_E_CLASSNOTREG를 반환 할 수, 예를 들어, 고려 I/O 오류) CLSID과 자신의 내부 GUID 개체를 구별하는 것이 좋습니다.

+0

감사합니다. @Nik. 사무실에서 더 논의한 후 이제 CLSIDFromString이 REGDB_E_CLASSNOTREG를 반환해야하는 이유는 문자열 매개 변수의 GUID뿐만 아니라 OLE 클래스 이름도 허용한다는 것입니다. 어쨌든, UuidFromString을 사용하는 것이 거의 확실합니다. –

1

레이몬드 첸 answers this :

Uuid­From­String는 :

의이 UuidFromString 시작하자. 중괄호없이 기본 형식 의 문자열을 사용합니다. 특수한 경우로 유효한 문자열 포인터 대신 NULL을 전달하면 함수는 계속 성공하고 을 GUID_NULL로 설정합니다.

CLSID­From­String

:

이 약간 더 복잡는 CLSIDFromString이다. (GUID로 처리되는) ​​중괄호 묶음을 허용하는 것 외에도 은 ProgId도 허용합니다. ProgId의 경우 해당 ProgId와 연결된 CLSID 을 반환합니다.