<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Active_Directory_Service_Interface</id>
	<title>Active Directory Service Interface - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Active_Directory_Service_Interface"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Active_Directory_Service_Interface&amp;action=history"/>
	<updated>2026-06-27T09:55:58Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Active_Directory_Service_Interface&amp;diff=412833&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救5个来源，并将0个来源标记为失效。) #IABot (v2.0.7</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Active_Directory_Service_Interface&amp;diff=412833&amp;oldid=prev"/>
		<updated>2020-12-07T16:10:45Z</updated>

		<summary type="html">&lt;p&gt;补救5个来源，并将0个来源标记为失效。) #IABot (v2.0.7&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Active Directory Service Interface&amp;#039;&amp;#039;&amp;#039; (ADSI) 是一組植基於 [[COM]] 技術上的應用程式開發介面，程式開發人員可以利用這些介面來連接並存取 [[Active Directory]]，並執行查詢，更新或刪除等管理功能，ADSI同時可支援以[[LDAP]]（輕量級目錄存取協定）為主的目錄服務（例如Novell Directory Service），以及以 Windows NT 網域為主所組成的 WinNT 網域目錄。&lt;br /&gt;
&lt;br /&gt;
== 介面結構 ==&lt;br /&gt;
&lt;br /&gt;
ADSI 由 COM 以及原生函式庫所組成，並封裝在 activeds.dll 檔案中，部份則被封裝在 advaip32.dll 中，以 COM 原生介面方式呈現，以提供給 C/C++ 程式語言透過 COM 介面來取用，不過由於所有的原生介面均支援 COM Automation，因此 Visual Basic 或是 .NET Framework 的語言也可以利用 COM Interop 能力存取 ADSI 中的介面。&lt;br /&gt;
&lt;br /&gt;
=== 原生介面 (Native interfaces) ===&lt;br /&gt;
&lt;br /&gt;
activeds.dll 中封裝了幾個 ADSI 中最核心的介面：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADs&amp;#039;&amp;#039;&amp;#039;：作為所有 Active Directory 物件最頂層的介面，擁有最基礎的功能，&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsContainer&amp;#039;&amp;#039;&amp;#039;：作為所有可收納 Active Directory 物件的收納器 (Container) 最頂層的介面，具有收納器的基礎功能。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsOpenDSObject&amp;#039;&amp;#039;&amp;#039;：連接 Active Directory 之用（它只有 OpenDSObject() 一個方法），同時它會快取住用來連接的安全資訊內容。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsNamespace&amp;#039;&amp;#039;&amp;#039;：由目錄服務提供者 (directory service provider) 提供，用來識別目錄結構的命名空間之用。&lt;br /&gt;
&lt;br /&gt;
activeds.dll 亦提供了幾個依物件不同而實作的介面，像是：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsComputer&amp;#039;&amp;#039;&amp;#039;：提供目錄服務中的電腦 (computer) 物件。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsDomain&amp;#039;&amp;#039;&amp;#039;：提供目錄服務中的網域 (domain) 物件。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsUser&amp;#039;&amp;#039;&amp;#039;：提供目錄服務中的使用者 (user) 物件。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsGroup&amp;#039;&amp;#039;&amp;#039;：提供目錄服務中的使用者群組 (group) 物件。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsOU&amp;#039;&amp;#039;&amp;#039;：提供目錄服務中的組織單元 (organization unit) 物件。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsCollection&amp;#039;&amp;#039;&amp;#039;：提供目錄服務物件集合。&lt;br /&gt;
&lt;br /&gt;
在使用 ADSI 之時，有時會需要一些工具型功能，像是 DOMAIN\user 和 User Principal Name 間的轉換，或是取得系統資訊等，ADSI 也提供了這類的介面：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsNameTranslate&amp;#039;&amp;#039;&amp;#039;：在目錄服務中在不同的名稱間轉換。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsWinNTSystemInfo&amp;#039;&amp;#039;&amp;#039;：在目錄服務中取得 Windows NT Directory Service 系統資訊。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsADSystemInfo&amp;#039;&amp;#039;&amp;#039;：在目錄服務中取得 LDAP Directory Service 系統資訊。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IADsPathname&amp;#039;&amp;#039;&amp;#039;：剖析 X.500 名稱與路徑。&lt;br /&gt;
&lt;br /&gt;
這些介面多是使用 C/C++ 程式語言來存取，若是使用 VB 或是 Scripting Language 時，則可以使用另外的方法來存取。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; Get user object from Active Directory.&lt;br /&gt;
Dim mach As IADsContainer&lt;br /&gt;
Dim usr as IADsUser&lt;br /&gt;
&lt;br /&gt;
On Error GoTo Cleanup&lt;br /&gt;
Set mach = GetObject(&amp;quot;WinNT://MyMachine,Computer&amp;quot;)&lt;br /&gt;
Set usr = mach.Create(&amp;quot;user&amp;quot;,&amp;quot;jeffsmith&amp;quot;)&lt;br /&gt;
usr.SetInfo&lt;br /&gt;
&lt;br /&gt;
Cleanup:&lt;br /&gt;
    If(Err.Number&amp;lt;&amp;gt;0) Then&lt;br /&gt;
        MsgBox(&amp;quot;An error has occurred. &amp;quot; &amp;amp; Err.Number)&lt;br /&gt;
    End If&lt;br /&gt;
    Set mach = Nothing&lt;br /&gt;
    Set usr = Nothing&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// binding Active Directory using C++ and native interface.&lt;br /&gt;
IADs *pObject;&lt;br /&gt;
HRESULT hr;&lt;br /&gt;
&lt;br /&gt;
// Initialize COM.&lt;br /&gt;
CoInitialize(NULL);&lt;br /&gt;
&lt;br /&gt;
hr = ADsGetObject(L&amp;quot;LDAP://CN=jeffsmith,DC=fabrikam,DC=com&amp;quot;, &lt;br /&gt;
        IID_IADs,&lt;br /&gt;
        (void**) &amp;amp;pObject);&lt;br /&gt;
if(SUCCEEDED(hr))&lt;br /&gt;
{&lt;br /&gt;
    // Use the object.&lt;br /&gt;
&lt;br /&gt;
    // Release the object.&lt;br /&gt;
    pObject-&amp;gt;Release()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Uninitialize COM.&lt;br /&gt;
CoUninitialize();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 函式 ===&lt;br /&gt;
&lt;br /&gt;
ADSI 除了介面以外，也將部份功能使用函式方式顯露，以簡化呼叫原生介面需要處理的工作，較重要且經常被使用的有：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADsOpenDSObject()&amp;#039;&amp;#039;&amp;#039;，封裝取得 IADs 或 IADsContainer 等物件的工作。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADsGetObject()&amp;#039;&amp;#039;&amp;#039;，封裝利用已開啟的 Active Directory Session 取得物件的工作。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADsGetLastError()&amp;#039;&amp;#039;&amp;#039;，取得在 ADSI 作業中，最後一個引發的錯誤。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;AllocADsMem()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;FreeADsMem()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;AllocADsStr()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;FreeADsStr()&amp;#039;&amp;#039;&amp;#039;，配置與釋放 ADSI 使用的資源。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADsBuildEnumerator()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;ADsEnumerateNext()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;ADsFreeEnumerator()&amp;#039;&amp;#039;&amp;#039;：處理 ADSI 物件的列舉工作。&lt;br /&gt;
&lt;br /&gt;
下列的例子，是使用 ADsOpenDSObject() 取得 IADs 物件的範例程式碼：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
IADs *pObject;&lt;br /&gt;
LPWSTR szUsername = NULL;&lt;br /&gt;
LPWSTR szPassword = NULL&lt;br /&gt;
HRESULT hr;&lt;br /&gt;
&lt;br /&gt;
// Insert code to securely retrieve the username and password.&lt;br /&gt;
&lt;br /&gt;
hr = ADsOpenObject(L&amp;quot;LDAP://CN=Jeff,DC=Fabrikam,DC=com&amp;quot;,&lt;br /&gt;
                   &amp;quot;jeffsmith&amp;quot;,&lt;br /&gt;
                   &amp;quot;etercespot&amp;quot;,&lt;br /&gt;
                   ADS_SECURE_AUTHENTICATION, &lt;br /&gt;
                   IID_IADs,&lt;br /&gt;
                   (void**) &amp;amp;pObject);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .NET Framework 原生介面 ===&lt;br /&gt;
&lt;br /&gt;
在 [[.NET Framework]] 中，另外提供了一個 .NET 專用的 ADSI 介面程式庫 System.DirectoryService.dll，程式開發人員可以加入此程式庫的參考來取得 ADSI 的功能，在這個原生類別庫中，封裝了兩個類別，作為存取 Active Directory 的入口之用。&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DirectoryEntry&amp;#039;&amp;#039;&amp;#039;：此類別封裝了 IADs 以及 IADsContainer 等原生介面，用來存取 Active Directory 的物件資料，以及 Schema 封裝的資訊等等。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DirectorySearcher&amp;#039;&amp;#039;&amp;#039;：此類別封裝了 IDirectorySearch 介面，作為搜尋 Active Directory 的主要工具，並使用 SearchResult 物件封裝搜尋結果，讓 .NET 開發人員可以簡化處理搜尋結果的工作。&lt;br /&gt;
&lt;br /&gt;
截至 .NET Framework 3.5 為止，ADSI 在 Managed Class Library 中有四個命名空間：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;System.DirectoryServices&amp;#039;&amp;#039;&amp;#039;：原生的 ADSI Managed 介面，封裝 DirectoryEntry 和 DirectorySearcher 與工具類別。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;System.DirectoryServices.AccountManagement&amp;#039;&amp;#039;&amp;#039;：封裝對 IADsUser, IADsComputer, IADsGroup 等介面，簡化處理物件的工具。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;System.DirectoryServices.ActiveDirectory&amp;#039;&amp;#039;&amp;#039;：封裝對 Active Directory 結構物件的工具。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;System.DirectoryServices.Protocol&amp;#039;&amp;#039;&amp;#039;：封裝對 LDAP 協定與目錄服務通訊的工具與基礎類別。&lt;br /&gt;
&lt;br /&gt;
下列為使用 C# 存取 DirectoryEntry 的範例程式碼：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
DirectoryEntry ent = new DirectoryEntry();&lt;br /&gt;
DirectoryEntry ou = ent.Children.Find(&amp;quot;OU=Consulting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Use the Add method to add a user to an organizational unit.&lt;br /&gt;
DirectoryEntry usr = ou.Children.Add(&amp;quot;CN=New User&amp;quot;,&amp;quot;user&amp;quot;);&lt;br /&gt;
// Set the samAccountName, then commit changes to the directory.&lt;br /&gt;
usr.Properties[&amp;quot;samAccountName&amp;quot;].Value = &amp;quot;newuser&amp;quot;; &lt;br /&gt;
usr.CommitChanges();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 目錄服務提供者 (directory service provider) ==&lt;br /&gt;
&lt;br /&gt;
ADSI 因為是使用了 LDAP 以及開放式目錄等標準，因此只要目錄服務的平台是以開放式目錄標準實作 IADsNamespace 與其他目錄服務提供者介面時，即可由 ADSI 來支援，目前 ADSI 有五種提供者：&lt;br /&gt;
&lt;br /&gt;
* ADSI LDAP Provider：Active Directory 官方主要的支援介面，連接字串使用 LDAP:// 為主。&lt;br /&gt;
* ADSI WinNT Provider：以 Windows NT 為主的支援介面，連接字串使用 WinNT:// 為主。&lt;br /&gt;
* ADSI NDS Provider：支援 Novell Directory Service，連接字串使用 NDS:// 為主。&lt;br /&gt;
* ADSI NWCOMPAT Provider：支援 Novell Netware 3.x 的網路服務，連接字串使用 NWCOMPAT:// 為主。&lt;br /&gt;
* ADSI IIS Provider：支援 IIS 內部的提供者，連接字串以 IIS:// 為主，用於存取 IIS Metabase。&lt;br /&gt;
&lt;br /&gt;
== OLE DB Provider for Directory Services ==&lt;br /&gt;
&lt;br /&gt;
除了 ADSI 原生介面外，微軟也為了 SQL Server 或是 ADO 應用程式開發人員發展了可使用 ADO 來存取 Active Directory 的驅動程式，此驅動程式使用 OLE DB 來開發，並且使用類似 SQL 指令的方式來存取 Active Directory，此驅動程式稱為 OLE DB Provider for Directory Service，其 COM 的 Prog ID 為 &amp;#039;&amp;#039;&amp;#039;ADsDSOObject&amp;#039;&amp;#039;&amp;#039;。&lt;br /&gt;
&lt;br /&gt;
下例為使用 ADO 存取 Active Directory 的範例程式碼：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim Con As New Connection&lt;br /&gt;
Dim rs As New Recordset&lt;br /&gt;
Dim command As New Command&lt;br /&gt;
Dim usr As IADsUser&lt;br /&gt;
&lt;br /&gt;
&amp;#039; Replace department for all users in OU=sales.&lt;br /&gt;
Set con = Server.CreateObject(&amp;quot;ADODB.Connection&amp;quot;)&lt;br /&gt;
con.Provider = &amp;quot;ADsDSOObject&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Set command = CreateObject(&amp;quot;ADODB.Command&amp;quot;)&lt;br /&gt;
Set command.ActiveConnection = con&lt;br /&gt;
 &lt;br /&gt;
command.CommandText = &amp;quot;SELECT AdsPath, cn FROM &amp;#039;LDAP://OU=Sales,DC=Fabrikam,DC=com&amp;#039; WHERE objectClass = &amp;#039;user&amp;#039;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
command.Properties(&amp;quot;searchscope&amp;quot;) = ADS_SCOPE_ONELEVEL&lt;br /&gt;
Set rs = command.Execute&lt;br /&gt;
While Not rs.EOF&lt;br /&gt;
    Set usr = GetObject(rs.Fields(&amp;quot;AdsPath&amp;quot;).Value)&lt;br /&gt;
    usr.Put &amp;quot;department&amp;quot;, &amp;quot;1001&amp;quot;&lt;br /&gt;
    usr.SetInfo&lt;br /&gt;
    rs.MoveNext&lt;br /&gt;
Wend&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下列指令為使用 SQL Server 查詢來合併存取 Active Directory 的指令碼&amp;lt;ref&amp;gt;{{Cite web |url=http://www.kodyaz.com/articles/active-directory-services-queries-using-openquery.aspx |title=Running Active Directory Services Queries Using MS SQL Server OPENQUERY Command |accessdate=2009-01-01 |archive-date=2009-01-05 |archive-url=https://web.archive.org/web/20090105114113/http://www.kodyaz.com/articles/active-directory-services-queries-using-openquery.aspx |dead-url=no }}&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- create a linked server to active directory interface&lt;br /&gt;
EXEC sp_addlinkedserver &amp;#039;ADSI&amp;#039;, &amp;#039;Active Directory Services 2.5&amp;#039;, &amp;#039;ADSDSOObject&amp;#039;, &amp;#039;adsdatasource&amp;#039; &lt;br /&gt;
&lt;br /&gt;
-- configure SQL Server to allow ad-hoc query and openquery statement.&lt;br /&gt;
EXEC sp_configure &amp;#039;show advanced options&amp;#039;, 1&lt;br /&gt;
reconfigure with override&lt;br /&gt;
&lt;br /&gt;
EXEC sp_configure &amp;#039;Ad Hoc Distributed Queries&amp;#039;, 1 &lt;br /&gt;
reconfigure &lt;br /&gt;
&lt;br /&gt;
-- execute query via OpenQuery() statement&lt;br /&gt;
SELECT * FROM OpenQuery(ADSI, &amp;#039;SELECT * FROM &amp;#039;&amp;#039;LDAP://DC=kodyaz,DC=com&amp;#039;&amp;#039; WHERE objectCategory=&amp;#039;&amp;#039;user&amp;#039;&amp;#039; &amp;#039;) &lt;br /&gt;
&lt;br /&gt;
SELECT * FROM OpenQuery(ADSI, &amp;#039;SELECT mail, displayName, userPrincipalName FROM &amp;#039;&amp;#039;LDAP://DC=kodyaz,DC=com&amp;#039;&amp;#039; WHERE objectCategory=&amp;#039;&amp;#039;user&amp;#039;&amp;#039; &amp;#039;) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 開發 Directory-Enabled 應用程式時可用的工具 ==&lt;br /&gt;
&lt;br /&gt;
由於 ADSI 和 Active Directory 的特性，開發人員若沒有使用適當的工具時，很難發展與目錄服務連結 (directory-enabled) 的應用程式，因此微軟為 Active Directory 提供了兩種工具：&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Active Directory Explorer&amp;#039;&amp;#039;&amp;#039;：由 Sysinternals 團隊所開發&amp;lt;ref&amp;gt;{{Cite web |url=http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx |title=AD Explorer |accessdate=2009-01-01 |archive-date=2008-12-18 |archive-url=https://web.archive.org/web/20081218042501/http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx |dead-url=no }}&amp;lt;/ref&amp;gt;，現已併入 Microsoft TechNet 團隊中，可用來瀏覽 AD 網域或樹系的 LDAP 階層字串，以及物件的屬性資料。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ADSIEdit&amp;#039;&amp;#039;&amp;#039;：在 Windows 2000 和 Windows Server 2003 時，由 Resource Kit Support Tools 安裝包提供，到了 Windows Server 2008 時，則內建在系統中&amp;lt;ref&amp;gt;{{Cite web |url=http://technet.microsoft.com/en-us/library/cc773354.aspx |title=Adsiedit Overview: Active Directory |accessdate=2009-01-01 |archive-date=2008-12-30 |archive-url=https://web.archive.org/web/20081230162632/http://technet.microsoft.com/en-us/library/cc773354.aspx |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 參考資料 ==&lt;br /&gt;
&lt;br /&gt;
內容參考：&lt;br /&gt;
&amp;lt;div class=&amp;quot;references-small&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
文章參考：&lt;br /&gt;
# [http://msdn.microsoft.com/en-us/library/aa772170(VS.85).aspx MSDN Library: Active Directory Service Interface]{{Wayback|url=http://msdn.microsoft.com/en-us/library/aa772170(VS.85).aspx |date=20080510114524 }}&lt;br /&gt;
# [http://msdn.microsoft.com/en-us/library/ms180826.aspx Directory Service in .NET Framework]{{Wayback|url=http://msdn.microsoft.com/en-us/library/ms180826.aspx |date=20090112153209 }}&lt;br /&gt;
&lt;br /&gt;
{{Microsoft APIs}}&lt;br /&gt;
[[Category:Windows API]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>