Fungsi CompareObjectHandles (handleapi.h)

Membandingkan dua handel objek untuk menentukan apakah mereka merujuk ke objek kernel yang mendasar yang sama.

Sintaks

BOOL CompareObjectHandles(
  [in] HANDLE hFirstObjectHandle,
  [in] HANDLE hSecondObjectHandle
);

Parameter

[in] hFirstObjectHandle

Handel objek pertama yang dibandingkan.

[in] hSecondObjectHandle

Handel objek kedua untuk dibandingkan.

Nilai kembali

Nilai Boolean yang menunjukkan apakah kedua handel merujuk ke objek kernel yang mendasar yang sama. TRUE jika sama, jika tidak FALSE.

Keterangan

Fungsi CompareObjectHandles berguna untuk menentukan apakah dua handel kernel mengacu pada objek kernel yang sama tanpa memberlakukan persyaratan bahwa hak akses tertentu diberikan untuk menangani untuk melakukan perbandingan. Misalnya, jika proses ingin menentukan apakah handel proses adalah handel ke proses saat ini, panggilan ke CompareObjectHandles (GetCurrentProcess (), hProcess) dapat digunakan untuk menentukan apakah hProcess mengacu pada proses saat ini. Terutama, ini tidak memerlukan penggunaan hak akses khusus objek, sedangkan dalam contoh ini, memanggil GetProcessId untuk memeriksa ID proses dari dua handel proses memberlakukan persyaratan bahwa menangani pemberian akses PROCESS_QUERY_LIMITED_INFORMATION. Namun hukum untuk handel proses untuk tidak memiliki hak akses yang diberikan tergantung pada bagaimana handel dimaksudkan untuk digunakan.

Contoh

Sampel kode berikut membuat tiga handel, dua di antaranya merujuk ke objek yang sama, lalu membandingkannya untuk menunjukkan bahwa objek kernel yang mendasar yang identik akan mengembalikan TRUE, sementara objek non-identik akan mengembalikan FALSE.

#include <windows.h>
#include <stdio.h>
#include <wchar.h>

HANDLE Event1;
HANDLE Event2;
HANDLE Event3;

	// Create a handle to a named event.
Event1 = CreateEventW (NULL, TRUE, FALSE, L"{75A520B7-2C11-4809-B43A-0D31FB1FDD19}");
if (Event1 == NULL) {	ExitProcess (0);	}

	// Create a handle to the same event.
Event2 = CreateEventW (NULL, TRUE, FALSE, L"{75A520B7-2C11-4809-B43A-0D31FB1FDD19}");
if (Event2 == NULL) {	ExitProcess (0);	}

	// Create a handle to an anonymous, unnamed event.
Event3 = CreateEventW (NULL, TRUE, FALSE, NULL);
if (Event3 == NULL) {	ExitProcess (0);	}

	// Compare two handles to the same kernel object.
if (CompareObjectHandles (Event1, Event2) != FALSE) 
	{	// This message should be printed by the program.
		wprintf (L"Event1 and Event2 refer to the same underlying event object.\n");
	}

	// Compare two handles to different kernel objects.
if (CompareObjectHandles (Event1, Event3) == FALSE) 
	{	// This message should be printed by the program.
		wprintf (L"Event1 and Event3 refer to different underlying event objects.  (Error %lu)\n", GetLastError ());		
	}

	// Compare two handles to different kernel objects, each of a different type of kernel object.
	// The comparison is legal to make, though the function will always return FALSE and indicate 
	// a last error status of ERROR_NOT_SAME_OBJECT.
if (CompareObjectHandles (Event1, GetCurrentProcess ()) == FALSE) 
	{	// This message should be printed by the program.
		wprintf (L"Event1 and the current process refer to different underlying kernel objects.  (Error %lu)\n", GetLastError ());
	}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2016 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header handleapi.h (termasuk Windows.h)
Pustaka Kernelbase.lib
DLL Kernelbase.dll

Lihat juga

Menangani dan Fungsi Objek