Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Bu işlevler, hazırlama ve verileri arabirim işaretçilerine dönüştürme desteği sağlar.
Önemli
Aşağıdaki tabloda listelenen işlevler, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
| Veri Akışı Adı | Açıklama |
|---|---|
| AtlFreeMarshalStream | Hazırlama verilerini ve işaretçiyi IStream serbest bırakır. |
| AtlMarshalPtrInProc | Yeni bir akış nesnesi oluşturur ve belirtilen arabirim işaretçisini sıralar. |
| AtlUnmarshalPtr | Bir akışın sıralama verilerini arabirim işaretçisine dönüştürür. |
Gereksinimler:
Üst bilgi: atlbase.h
AtlFreeMarshalStream
Akıştaki sıralama verilerini serbest bırakır, ardından da akış işaretçisini serbest bırakır.
HRESULT AtlFreeMarshalStream(IStream* pStream);
Parametreler
pStream
[in] Hazırlama için IStream kullanılan akış arabirimine yönelik bir işaretçi.
Örnek
AtlMarshalPtrInProc örneğine bakın.
AtlMarshalPtrInProc
Yeni bir akış nesnesi oluşturur, proxy CLSID değerini akışa yazar ve proxy'yi akış içinde başlatmak üzere gerekli olan veriyi yazarak belirtilen arabirim işaretçisini sıralar.
HRESULT AtlMarshalPtrInProc(
IUnknown* pUnk,
const IID& iid,
IStream** ppStream);
Parametreler
Punk
[in] Sıralanacak arabirimin işaretçisi.
iid
[in] Sıralanan arabirimin GUID'i.
ppStream
[out] Sıralama için IStream kullanılan yeni akış nesnesinde arabirim işaretçisi.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
MSHLFLAGS_TABLESTRONG bayrağı, işaretçinin birden çok akışa sıralanması için ayarlanır. İşaretçi birden çok kez de özetlenebilir.
Hazırlama başarısız olursa, akış işaretçisi serbest bırakılır.
AtlMarshalPtrInProc yalnızca işlem içi bir nesnenin işaretçisinde kullanılabilir.
Örnek
//marshaling interface from one thread to another
//IStream ptr to hold serialized presentation of interface ptr
IStream* g_pStm;
//forward declaration
DWORD WINAPI ThreadProc(LPVOID lpParameter);
HRESULT WriteInterfacePtrToStream(IMyCircle *pCirc)
{
//marshal the interface ptr to another thread
//pCirc has to be pointer to actual object & not a proxy
HRESULT hr = AtlMarshalPtrInProc(pCirc, IID_IMyCircle, &g_pStm);
//m_dwThreadID is a DWORD holding thread ID of thread being created.
CreateThread(NULL, 0, ThreadProc, NULL, 0, &m_dwThreadID);
return hr;
}
DWORD WINAPI ThreadProc(LPVOID /*lpParameter*/)
{
// CoInitializeEx is per thread, so initialize COM on this thread
// (required by AtlUnmarshalPtr)
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
IMyCircle* pCirc;
//unmarshal IMyCircle ptr from the stream
hr = AtlUnmarshalPtr(g_pStm, IID_IMyCircle, (IUnknown**)&pCirc);
// use IMyCircle ptr to call its methods
double center;
pCirc->get_XCenter(¢er);
//release the stream if no other thread requires it
//to unmarshal the IMyCircle interface pointer
hr = AtlFreeMarshalStream(g_pStm);
CoUninitialize();
}
return hr;
}
AtlUnmarshalPtr
Akışın sıralama verilerini istemci tarafından kullanılabilen bir arabirim işaretçisine dönüştürür.
HRESULT AtlUnmarshalPtr(
IStream* pStream,
const IID& iid,
IUnknown** ppUnk);
Parametreler
pStream
[in] Özetlenmeyen akışın işaretçisi.
iid
[in] Özetlenmeyen arabirimin GUID'i.
ppUnk
[out] Özetlenmemiş arabirimin işaretçisi.
Dönüş Değeri
Standart bir HRESULT değeri.
Örnek
AtlMarshalPtrInProc örneğine bakın.