_TP_POOL结构的定义在哪里?

时间:2014-05-02 13:37:03

标签: c windows delphi winapi header-files

为了在我的delphi应用程序中翻译windows vista线程池API。我需要知道_TP_POOL的定义。我查看了winnt.h并找到了以下typedef声明:

typedef struct _TP_POOL TP_POOL, *PTP_POOL; 

我无法在本地头文件中找到_TP_POOL。它的位置是哪个?

3 个答案:

答案 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 *引用即可。