为了在我的delphi应用程序中翻译windows vista线程池API。我需要知道_TP_POOL
的定义。我查看了winnt.h
并找到了以下typedef
声明:
typedef struct _TP_POOL TP_POOL, *PTP_POOL;
我无法在本地头文件中找到_TP_POOL
。它的位置是哪个?
答案 0 :(得分:4)
PTP_POOL
是一个不透明的指针。你永远不会知道,或者确实需要知道指针指的是什么。当您致电PTP_POOL
时,线程池API会提供CreateThreadpool
个值。然后,您将这些不透明指针值传递回您调用的其他线程池API函数。线程池API实现知道指针引用的内容,但您根本不需要。
在Delphi中,我会这样声明:
type
PTP_POOL = type Pointer;
我将此声明为一个不同的类型,以便编译器确保您不会将指向其他类型的指针分配给PTP_POOL
类型的变量。
答案 1 :(得分:3)
_TP_POOL
是一个不完整的类型,它永远不会在公共标题中完成。
这是类型安全的不透明句柄的常见C和C ++习语 换句话说,它们用于完全隐藏实现。
可能最着名的例子是FILE
。
答案 2 :(得分:3)
没有定义。但鉴于TP_POOL总是通过指针(PTP_POOL)传递,您不需要知道它的确切内部。只需将PTP_POOL视为声明为VOID *引用即可。