为了将Windows Vista线程池API翻译为适用于我的Delphi应用程序,我需要知道_TP_POOL的定义。我查看了winnt.h并找到以下typedef声明:
typedef struct _TP_POOL TP_POOL, *PTP_POOL;
我在本地头文件中找不到_TP_POOL
,它的位置在哪里?
typedef struct _TP_POOL TP_POOL, *PTP_POOL;
我在本地头文件中找不到_TP_POOL
,它的位置在哪里?
PTP_POOL
是一个不透明指针。您永远不会知道,也不需要知道该指针所指向的内容。当您调用 CreateThreadpool
时,线程池 API 提供 PTP_POOL
值。然后,您将这些不透明指针值传回给其他线程池 API 函数,以便进行调用。线程池 API 实现知道指针所指向的内容,但您只需要使用即可。
在 Delphi 中,我会这样声明它:
type
PTP_POOL = type Pointer;
PTP_POOL
类型的变量。_TP_POOL
是一个不完整的类型,在公共头文件中从未被完整定义过。
这是一种常见的C和C++编程惯用语,用于类型安全的不透明句柄。
换句话说,它们被用于完全隐藏实现细节。
可能最著名的例子是FILE
。
这个并没有定义。但是考虑到 TP_POOL 总是通过指针 (PTP_POOL) 传递,你不需要了解它的具体内部结构。只需将 PTP_POOL 视为 VOID* 引用即可。