1use crate::windows;
2use std::mem;
3
4pub trait Zeroed {
6 fn zeroed() -> Self;
7}
8
9macro_rules! impl_zeroed {
10 ($type:ty) => {
11 impl Zeroed for $type {
12 fn zeroed() -> Self {
13 unsafe { mem::zeroed() }
14 }
15 }
16 };
17}
18
19pub trait Null {
21 const NULL: Self;
22 fn is_null(&self) -> bool;
23}
24
25macro_rules! impl_null {
26 ($type:ty) => {
27 impl Null for $type {
28 const NULL: Self = Self(0 as _);
29
30 fn is_null(&self) -> bool {
31 self.0 == 0 as _
32 }
33 }
34 };
35}
36
37pub trait ValidateHandle {
39 fn is_invalid(&self) -> bool;
40}
41
42macro_rules! impl_null_and_validate_handle {
43 ($type:ty) => {
44 impl_null!($type);
45
46 impl ValidateHandle for $type {
47 #[inline]
48 fn is_invalid(&self) -> bool {
49 <$type>::is_invalid(self)
50 }
51 }
52 };
53}
54
55#[cfg(feature = "f_Win32_Foundation")]
58impl_zeroed!(windows::Win32::Foundation::POINT);
59#[cfg(feature = "f_Win32_Foundation")]
60impl_zeroed!(windows::Win32::Foundation::SIZE);
61
62impl_null!(windows::core::PCSTR);
64impl_null!(windows::core::PCWSTR);
65impl_null!(windows::core::PSTR);
66impl_null!(windows::core::PWSTR);
67
68#[cfg(any(feature = "windows_v0_48", feature = "windows_v0_52"))]
70#[cfg(feature = "f_Win32_Foundation")]
71impl_null!(windows::Win32::Foundation::HWND);
72
73#[cfg(feature = "f_Wdk_Storage_FileSystem_Minifilters")]
75impl_null_and_validate_handle!(windows::Wdk::Storage::FileSystem::Minifilters::PFLT_CONTEXT);
76#[cfg(feature = "f_Wdk_System_OfflineRegistry")]
77impl_null_and_validate_handle!(windows::Wdk::System::OfflineRegistry::ORHKEY);
78#[cfg(feature = "f_Win32_Devices_Bluetooth")]
79impl_null_and_validate_handle!(windows::Win32::Devices::Bluetooth::HANDLE_SDP_TYPE);
80#[cfg(feature = "f_Win32_Devices_Bluetooth")]
81impl_null_and_validate_handle!(windows::Win32::Devices::Bluetooth::HBLUETOOTH_DEVICE_FIND);
82#[cfg(feature = "f_Win32_Devices_Bluetooth")]
83impl_null_and_validate_handle!(windows::Win32::Devices::Bluetooth::HBLUETOOTH_RADIO_FIND);
84#[cfg(feature = "f_Win32_Devices_DeviceAndDriverInstallation")]
85impl_null_and_validate_handle!(
86 windows::Win32::Devices::DeviceAndDriverInstallation::HCMNOTIFICATION
87);
88#[cfg(feature = "f_Win32_Devices_DeviceAndDriverInstallation")]
89impl_null_and_validate_handle!(windows::Win32::Devices::DeviceAndDriverInstallation::HDEVINFO);
90#[cfg(feature = "f_Win32_Devices_Display")]
91impl_null_and_validate_handle!(windows::Win32::Devices::Display::DHPDEV);
92#[cfg(feature = "f_Win32_Devices_Display")]
93impl_null_and_validate_handle!(windows::Win32::Devices::Display::DHSURF);
94#[cfg(feature = "f_Win32_Devices_Display")]
95impl_null_and_validate_handle!(windows::Win32::Devices::Display::HBM);
96#[cfg(feature = "f_Win32_Devices_Display")]
97impl_null_and_validate_handle!(windows::Win32::Devices::Display::HDEV);
98#[cfg(feature = "f_Win32_Devices_Display")]
99impl_null_and_validate_handle!(windows::Win32::Devices::Display::HDRVOBJ);
100#[cfg(feature = "f_Win32_Devices_Display")]
101impl_null_and_validate_handle!(windows::Win32::Devices::Display::HFASTMUTEX);
102#[cfg(feature = "f_Win32_Devices_Display")]
103impl_null_and_validate_handle!(windows::Win32::Devices::Display::HSEMAPHORE);
104#[cfg(feature = "f_Win32_Devices_Display")]
105impl_null_and_validate_handle!(windows::Win32::Devices::Display::HSURF);
106#[cfg(feature = "f_Win32_Devices_Enumeration_Pnp")]
107impl_null_and_validate_handle!(windows::Win32::Devices::Enumeration::Pnp::HSWDEVICE);
108#[cfg(feature = "f_Win32_Devices_SerialCommunication")]
109impl_null_and_validate_handle!(windows::Win32::Devices::SerialCommunication::HCOMDB);
110#[cfg(feature = "f_Win32_Devices_Usb")]
111impl_null_and_validate_handle!(windows::Win32::Devices::Usb::WINUSB_INTERFACE_HANDLE);
112#[cfg(feature = "f_Win32_Foundation")]
113impl_null_and_validate_handle!(windows::Win32::Foundation::HANDLE);
114#[cfg(feature = "f_Win32_Foundation")]
115impl_null_and_validate_handle!(windows::Win32::Foundation::HGLOBAL);
116#[cfg(not(feature = "windows_v0_48"))]
117#[cfg(feature = "f_Win32_Foundation")]
118impl_null_and_validate_handle!(windows::Win32::Foundation::HINSTANCE);
119#[cfg(feature = "f_Win32_Foundation")]
120impl_null_and_validate_handle!(windows::Win32::Foundation::HLOCAL);
121#[cfg(feature = "f_Win32_Foundation")]
122impl_null_and_validate_handle!(windows::Win32::Foundation::HMODULE);
123#[cfg(feature = "f_Win32_Foundation")]
124impl_null_and_validate_handle!(windows::Win32::Foundation::HRSRC);
125#[cfg(not(any(feature = "windows_v0_48", feature = "windows_v0_52")))]
126#[cfg(feature = "f_Win32_Foundation")]
127impl_null_and_validate_handle!(windows::Win32::Foundation::HWND);
128#[cfg(any(feature = "windows_v0_48", feature = "windows_v0_52"))]
129#[cfg(feature = "f_Win32_Foundation")]
130impl_null_and_validate_handle!(windows::Win32::Foundation::PSID);
131#[cfg(feature = "f_Win32_Globalization")]
132impl_null_and_validate_handle!(windows::Win32::Globalization::HIMC);
133#[cfg(feature = "f_Win32_Globalization")]
134impl_null_and_validate_handle!(windows::Win32::Globalization::HIMCC);
135#[cfg(feature = "f_Win32_Globalization")]
136impl_null_and_validate_handle!(windows::Win32::Globalization::HSAVEDUILANGUAGES);
137#[cfg(feature = "f_Win32_Graphics_Gdi")]
138impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HBITMAP);
139#[cfg(feature = "f_Win32_Graphics_Gdi")]
140impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HBRUSH);
141#[cfg(feature = "windows_v0_48")]
142#[cfg(feature = "f_Win32_Graphics_Gdi")]
143impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::CreatedHDC);
144#[cfg(feature = "f_Win32_Graphics_Gdi")]
145impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HDC);
146#[cfg(feature = "f_Win32_Graphics_Gdi")]
147impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HENHMETAFILE);
148#[cfg(feature = "f_Win32_Graphics_Gdi")]
149impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HFONT);
150#[cfg(feature = "f_Win32_Graphics_Gdi")]
151impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HGDIOBJ);
152#[cfg(feature = "f_Win32_Graphics_Gdi")]
153impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HMETAFILE);
154#[cfg(feature = "f_Win32_Graphics_Gdi")]
155impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HMONITOR);
156#[cfg(feature = "f_Win32_Graphics_Gdi")]
157impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HPALETTE);
158#[cfg(feature = "f_Win32_Graphics_Gdi")]
159impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HPEN);
160#[cfg(feature = "f_Win32_Graphics_Gdi")]
161impl_null_and_validate_handle!(windows::Win32::Graphics::Gdi::HRGN);
162#[cfg(feature = "f_Win32_Graphics_OpenGL")]
163impl_null_and_validate_handle!(windows::Win32::Graphics::OpenGL::HGLRC);
164#[cfg(feature = "f_Win32_Media_Audio")]
165impl_null_and_validate_handle!(windows::Win32::Media::Audio::HACMDRIVER);
166#[cfg(feature = "f_Win32_Media_Audio")]
167impl_null_and_validate_handle!(windows::Win32::Media::Audio::HACMDRIVERID);
168#[cfg(feature = "f_Win32_Media_Audio")]
169impl_null_and_validate_handle!(windows::Win32::Media::Audio::HACMOBJ);
170#[cfg(feature = "f_Win32_Media_Audio")]
171impl_null_and_validate_handle!(windows::Win32::Media::Audio::HACMSTREAM);
172#[cfg(feature = "f_Win32_Media_Audio")]
173impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIDI);
174#[cfg(feature = "f_Win32_Media_Audio")]
175impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIDIIN);
176#[cfg(feature = "f_Win32_Media_Audio")]
177impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIDIOUT);
178#[cfg(feature = "f_Win32_Media_Audio")]
179impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIDISTRM);
180#[cfg(feature = "f_Win32_Media_Audio")]
181impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIXER);
182#[cfg(feature = "f_Win32_Media_Audio")]
183impl_null_and_validate_handle!(windows::Win32::Media::Audio::HMIXEROBJ);
184#[cfg(feature = "f_Win32_Media_Audio")]
185impl_null_and_validate_handle!(windows::Win32::Media::Audio::HWAVE);
186#[cfg(feature = "f_Win32_Media_Audio")]
187impl_null_and_validate_handle!(windows::Win32::Media::Audio::HWAVEIN);
188#[cfg(feature = "f_Win32_Media_Audio")]
189impl_null_and_validate_handle!(windows::Win32::Media::Audio::HWAVEOUT);
190#[cfg(feature = "f_Win32_Media")]
191impl_null_and_validate_handle!(windows::Win32::Media::HTASK);
192#[cfg(feature = "f_Win32_Media_Multimedia")]
193impl_null_and_validate_handle!(windows::Win32::Media::Multimedia::HDRVR);
194#[cfg(feature = "f_Win32_Media_Multimedia")]
195impl_null_and_validate_handle!(windows::Win32::Media::Multimedia::HIC);
196#[cfg(feature = "f_Win32_Media_Multimedia")]
197impl_null_and_validate_handle!(windows::Win32::Media::Multimedia::HMMIO);
198#[cfg(feature = "f_Win32_Media_Multimedia")]
199impl_null_and_validate_handle!(windows::Win32::Media::Multimedia::HVIDEO);
200#[cfg(feature = "f_Win32_Media_Speech")]
201impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPGRAMMARHANDLE);
202#[cfg(feature = "f_Win32_Media_Speech")]
203impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPPHRASEPROPERTYHANDLE);
204#[cfg(feature = "f_Win32_Media_Speech")]
205impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPPHRASERULEHANDLE);
206#[cfg(feature = "f_Win32_Media_Speech")]
207impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPRECOCONTEXTHANDLE);
208#[cfg(feature = "f_Win32_Media_Speech")]
209impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPRULEHANDLE);
210#[cfg(feature = "f_Win32_Media_Speech")]
211impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPSTATEHANDLE);
212#[cfg(feature = "f_Win32_Media_Speech")]
213impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPTRANSITIONID);
214#[cfg(feature = "f_Win32_Media_Speech")]
215impl_null_and_validate_handle!(windows::Win32::Media::Speech::SPWORDHANDLE);
216#[cfg(feature = "f_Win32_Networking_ActiveDirectory")]
217impl_null_and_validate_handle!(windows::Win32::Networking::ActiveDirectory::ADS_SEARCH_HANDLE);
218#[cfg(feature = "f_Win32_Networking_WebSocket")]
219impl_null_and_validate_handle!(windows::Win32::Networking::WebSocket::WEB_SOCKET_HANDLE);
220#[cfg(feature = "f_Win32_Networking_WinInet")]
221impl_null_and_validate_handle!(windows::Win32::Networking::WinInet::HTTP_PUSH_WAIT_HANDLE);
222#[cfg(feature = "f_Win32_Networking_WinSock")]
223impl_null_and_validate_handle!(windows::Win32::Networking::WinSock::WSAEVENT);
224#[cfg(feature = "f_Win32_NetworkManagement_IpHelper")]
225impl_null_and_validate_handle!(windows::Win32::NetworkManagement::IpHelper::HIFTIMESTAMPCHANGE);
226#[cfg(feature = "f_Win32_NetworkManagement_QoS")]
227impl_null_and_validate_handle!(windows::Win32::NetworkManagement::QoS::LPM_HANDLE);
228#[cfg(feature = "f_Win32_NetworkManagement_QoS")]
229impl_null_and_validate_handle!(windows::Win32::NetworkManagement::QoS::RHANDLE);
230#[cfg(feature = "f_Win32_NetworkManagement_Rras")]
231impl_null_and_validate_handle!(windows::Win32::NetworkManagement::Rras::HRASCONN);
232#[cfg(feature = "f_Win32_Security_Authentication_Identity")]
233impl_null_and_validate_handle!(windows::Win32::Security::Authentication::Identity::LSA_HANDLE);
234#[cfg(feature = "f_Win32_Security_Authorization")]
235impl_null_and_validate_handle!(
236 windows::Win32::Security::Authorization::AUTHZ_ACCESS_CHECK_RESULTS_HANDLE
237);
238#[cfg(feature = "f_Win32_Security_Authorization")]
239impl_null_and_validate_handle!(windows::Win32::Security::Authorization::AUTHZ_AUDIT_EVENT_HANDLE);
240#[cfg(feature = "f_Win32_Security_Authorization")]
241impl_null_and_validate_handle!(
242 windows::Win32::Security::Authorization::AUTHZ_AUDIT_EVENT_TYPE_HANDLE
243);
244#[cfg(feature = "f_Win32_Security_Authorization")]
245impl_null_and_validate_handle!(
246 windows::Win32::Security::Authorization::AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE
247);
248#[cfg(feature = "f_Win32_Security_Authorization")]
249impl_null_and_validate_handle!(
250 windows::Win32::Security::Authorization::AUTHZ_CLIENT_CONTEXT_HANDLE
251);
252#[cfg(feature = "f_Win32_Security_Authorization")]
253impl_null_and_validate_handle!(
254 windows::Win32::Security::Authorization::AUTHZ_RESOURCE_MANAGER_HANDLE
255);
256#[cfg(feature = "f_Win32_Security_Authorization")]
257impl_null_and_validate_handle!(
258 windows::Win32::Security::Authorization::AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE
259);
260#[cfg(feature = "f_Win32_Security_Cryptography")]
261impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::BCRYPT_ALG_HANDLE);
262#[cfg(feature = "f_Win32_Security_Cryptography")]
263impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::BCRYPT_HANDLE);
264#[cfg(feature = "f_Win32_Security_Cryptography")]
265impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::BCRYPT_HASH_HANDLE);
266#[cfg(feature = "f_Win32_Security_Cryptography")]
267impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::BCRYPT_KEY_HANDLE);
268#[cfg(feature = "f_Win32_Security_Cryptography")]
269impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::BCRYPT_SECRET_HANDLE);
270#[cfg(feature = "f_Win32_Security_Cryptography")]
271impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::HCERTCHAINENGINE);
272#[cfg(feature = "f_Win32_Security_Cryptography")]
273impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::HCERTSTORE);
274#[cfg(feature = "f_Win32_Security_Cryptography")]
275impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::HCERTSTOREPROV);
276#[cfg(feature = "f_Win32_Security_Cryptography")]
277impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::HCRYPTASYNC);
278#[cfg(feature = "f_Win32_Security_Cryptography")]
279impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::HCRYPTPROV_LEGACY);
280#[cfg(feature = "f_Win32_Security_Cryptography")]
281impl_null_and_validate_handle!(
282 windows::Win32::Security::Cryptography::HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
283);
284#[cfg(feature = "f_Win32_Security_Cryptography")]
285impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::NCRYPT_HANDLE);
286#[cfg(feature = "f_Win32_Security_Cryptography")]
287impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::NCRYPT_HASH_HANDLE);
288#[cfg(feature = "f_Win32_Security_Cryptography")]
289impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::NCRYPT_KEY_HANDLE);
290#[cfg(feature = "f_Win32_Security_Cryptography")]
291impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::NCRYPT_PROV_HANDLE);
292#[cfg(feature = "f_Win32_Security_Cryptography")]
293impl_null_and_validate_handle!(windows::Win32::Security::Cryptography::NCRYPT_SECRET_HANDLE);
294#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
295impl_null_and_validate_handle!(
296 windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_DATA_QUERY_SESSION
297);
298#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
299impl_null_and_validate_handle!(
300 windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_EVENT_CATEGORY_DESCRIPTION
301);
302#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
303impl_null_and_validate_handle!(
304 windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_EVENT_PRODUCER_DESCRIPTION
305);
306#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
307impl_null_and_validate_handle!(
308 windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_EVENT_TAG_DESCRIPTION
309);
310#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
311impl_null_and_validate_handle!(windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_RECORD);
312#[cfg(feature = "f_Win32_Security_DiagnosticDataQuery")]
313impl_null_and_validate_handle!(windows::Win32::Security::DiagnosticDataQuery::HDIAGNOSTIC_REPORT);
314#[cfg(feature = "f_Win32_Security")]
315impl_null_and_validate_handle!(windows::Win32::Security::NCRYPT_DESCRIPTOR_HANDLE);
316#[cfg(feature = "f_Win32_Security")]
317impl_null_and_validate_handle!(windows::Win32::Security::NCRYPT_STREAM_HANDLE);
318#[cfg(feature = "f_Win32_Security")]
319impl_null_and_validate_handle!(windows::Win32::Security::PSECURITY_DESCRIPTOR);
320#[cfg(not(any(feature = "windows_v0_48", feature = "windows_v0_52")))]
321#[cfg(feature = "f_Win32_Security")]
322impl_null_and_validate_handle!(windows::Win32::Security::PSID);
323#[cfg(feature = "f_Win32_Security")]
324impl_null_and_validate_handle!(windows::Win32::Security::SAFER_LEVEL_HANDLE);
325#[cfg(feature = "f_Win32_Storage_CloudFilters")]
326impl_null_and_validate_handle!(windows::Win32::Storage::CloudFilters::CF_CONNECTION_KEY);
327#[cfg(feature = "f_Win32_Storage_Compression")]
328impl_null_and_validate_handle!(windows::Win32::Storage::Compression::COMPRESSOR_HANDLE);
329#[cfg(feature = "f_Win32_Storage_InstallableFileSystems")]
330impl_null_and_validate_handle!(windows::Win32::Storage::InstallableFileSystems::HFILTER_INSTANCE);
331#[cfg(feature = "f_Win32_Storage_InstallableFileSystems")]
332impl_null_and_validate_handle!(windows::Win32::Storage::InstallableFileSystems::HFILTER);
333#[cfg(feature = "f_Win32_Storage_Jet")]
334impl_null_and_validate_handle!(windows::Win32::Storage::Jet::JET_LS);
335#[cfg(feature = "f_Win32_Storage_Jet")]
336impl_null_and_validate_handle!(windows::Win32::Storage::Jet::JET_OSSNAPID);
337#[cfg(feature = "f_Win32_Storage_ProjectedFileSystem")]
338impl_null_and_validate_handle!(
339 windows::Win32::Storage::ProjectedFileSystem::PRJ_DIR_ENTRY_BUFFER_HANDLE
340);
341#[cfg(feature = "f_Win32_Storage_ProjectedFileSystem")]
342impl_null_and_validate_handle!(
343 windows::Win32::Storage::ProjectedFileSystem::PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT
344);
345#[cfg(feature = "f_Win32_Storage_StructuredStorage")]
346impl_null_and_validate_handle!(windows::Win32::Storage::StructuredStorage::JET_API_PTR);
347#[cfg(feature = "f_Win32_Storage_StructuredStorage")]
348impl_null_and_validate_handle!(windows::Win32::Storage::StructuredStorage::JET_HANDLE);
349#[cfg(feature = "f_Win32_Storage_StructuredStorage")]
350impl_null_and_validate_handle!(windows::Win32::Storage::StructuredStorage::JET_INSTANCE);
351#[cfg(feature = "f_Win32_Storage_StructuredStorage")]
352impl_null_and_validate_handle!(windows::Win32::Storage::StructuredStorage::JET_SESID);
353#[cfg(feature = "f_Win32_Storage_StructuredStorage")]
354impl_null_and_validate_handle!(windows::Win32::Storage::StructuredStorage::JET_TABLEID);
355#[cfg(feature = "f_Win32_Storage_Xps")]
356impl_null_and_validate_handle!(windows::Win32::Storage::Xps::HPTPROVIDER);
357#[cfg(feature = "f_Win32_System_Antimalware")]
358impl_null_and_validate_handle!(windows::Win32::System::Antimalware::HAMSICONTEXT);
359#[cfg(feature = "f_Win32_System_Antimalware")]
360impl_null_and_validate_handle!(windows::Win32::System::Antimalware::HAMSISESSION);
361#[cfg(feature = "f_Win32_System_ApplicationInstallationAndServicing")]
362impl_null_and_validate_handle!(
363 windows::Win32::System::ApplicationInstallationAndServicing::MSIHANDLE
364);
365#[cfg(feature = "f_Win32_System_Com")]
366impl_null_and_validate_handle!(windows::Win32::System::Com::CO_DEVICE_CATALOG_COOKIE);
367#[cfg(feature = "f_Win32_System_Com")]
368impl_null_and_validate_handle!(windows::Win32::System::Com::CO_MTA_USAGE_COOKIE);
369#[cfg(feature = "f_Win32_System_Console")]
370impl_null_and_validate_handle!(windows::Win32::System::Console::HPCON);
371#[cfg(feature = "f_Win32_System_DataExchange")]
372impl_null_and_validate_handle!(windows::Win32::System::DataExchange::HCONV);
373#[cfg(feature = "f_Win32_System_DataExchange")]
374impl_null_and_validate_handle!(windows::Win32::System::DataExchange::HCONVLIST);
375#[cfg(feature = "f_Win32_System_DataExchange")]
376impl_null_and_validate_handle!(windows::Win32::System::DataExchange::HDDEDATA);
377#[cfg(feature = "f_Win32_System_DataExchange")]
378impl_null_and_validate_handle!(windows::Win32::System::DataExchange::HSZ);
379#[cfg(feature = "f_Win32_System_Diagnostics_Etw")]
380impl_null_and_validate_handle!(windows::Win32::System::Diagnostics::Etw::TDH_HANDLE);
381#[cfg(feature = "f_Win32_System_Diagnostics_ProcessSnapshotting")]
382impl_null_and_validate_handle!(windows::Win32::System::Diagnostics::ProcessSnapshotting::HPSS);
383#[cfg(feature = "f_Win32_System_Diagnostics_ProcessSnapshotting")]
384impl_null_and_validate_handle!(windows::Win32::System::Diagnostics::ProcessSnapshotting::HPSSWALK);
385#[cfg(feature = "f_Win32_System_ErrorReporting")]
386impl_null_and_validate_handle!(windows::Win32::System::ErrorReporting::HREPORT);
387#[cfg(feature = "f_Win32_System_ErrorReporting")]
388impl_null_and_validate_handle!(windows::Win32::System::ErrorReporting::HREPORTSTORE);
389#[cfg(feature = "f_Win32_System_EventLog")]
390impl_null_and_validate_handle!(windows::Win32::System::EventLog::EVT_HANDLE);
391#[cfg(feature = "f_Win32_System_HostCompute")]
392impl_null_and_validate_handle!(windows::Win32::System::HostCompute::HCS_CALLBACK);
393#[cfg(feature = "f_Win32_System_HostComputeSystem")]
394impl_null_and_validate_handle!(windows::Win32::System::HostComputeSystem::HCS_OPERATION);
395#[cfg(feature = "f_Win32_System_HostComputeSystem")]
396impl_null_and_validate_handle!(windows::Win32::System::HostComputeSystem::HCS_PROCESS);
397#[cfg(feature = "f_Win32_System_HostComputeSystem")]
398impl_null_and_validate_handle!(windows::Win32::System::HostComputeSystem::HCS_SYSTEM);
399#[cfg(feature = "f_Win32_System_Hypervisor")]
400impl_null_and_validate_handle!(windows::Win32::System::Hypervisor::WHV_PARTITION_HANDLE);
401#[cfg(feature = "f_Win32_System_Iis")]
402impl_null_and_validate_handle!(windows::Win32::System::Iis::HCONN);
403#[cfg(feature = "f_Win32_System_Ole")]
404impl_null_and_validate_handle!(windows::Win32::System::Ole::OLE_HANDLE);
405#[cfg(feature = "f_Win32_System_Power")]
406impl_null_and_validate_handle!(windows::Win32::System::Power::HPOWERNOTIFY);
407#[cfg(feature = "f_Win32_System_Registry")]
408impl_null_and_validate_handle!(windows::Win32::System::Registry::HKEY);
409#[cfg(feature = "f_Win32_System_Search")]
410impl_null_and_validate_handle!(windows::Win32::System::Search::HACCESSOR);
411#[cfg(feature = "f_Win32_System_Services")]
412impl_null_and_validate_handle!(windows::Win32::System::Services::SC_HANDLE);
413#[cfg(feature = "f_Win32_System_Services")]
414impl_null_and_validate_handle!(windows::Win32::System::Services::SERVICE_STATUS_HANDLE);
415#[cfg(feature = "f_Win32_System_StationsAndDesktops")]
416impl_null_and_validate_handle!(windows::Win32::System::StationsAndDesktops::HDESK);
417#[cfg(feature = "f_Win32_System_StationsAndDesktops")]
418impl_null_and_validate_handle!(windows::Win32::System::StationsAndDesktops::HWINSTA);
419#[cfg(feature = "f_Win32_System_Threading")]
420impl_null_and_validate_handle!(windows::Win32::System::Threading::LPPROC_THREAD_ATTRIBUTE_LIST);
421#[cfg(feature = "f_Win32_System_Threading")]
422impl_null_and_validate_handle!(windows::Win32::System::Threading::PTP_CALLBACK_INSTANCE);
423#[cfg(feature = "f_Win32_System_Threading")]
424impl_null_and_validate_handle!(windows::Win32::System::Threading::PTP_IO);
425#[cfg(feature = "f_Win32_System_Threading")]
426impl_null_and_validate_handle!(windows::Win32::System::Threading::PTP_TIMER);
427#[cfg(feature = "f_Win32_System_Threading")]
428impl_null_and_validate_handle!(windows::Win32::System::Threading::PTP_WAIT);
429#[cfg(feature = "f_Win32_System_Threading")]
430impl_null_and_validate_handle!(windows::Win32::System::Threading::PTP_WORK);
431#[cfg(feature = "f_Win32_System_WindowsProgramming")]
432impl_null_and_validate_handle!(
433 windows::Win32::System::WindowsProgramming::FEATURE_STATE_CHANGE_SUBSCRIPTION
434);
435#[cfg(feature = "f_Win32_System_WindowsProgramming")]
436impl_null_and_validate_handle!(windows::Win32::System::WindowsProgramming::FH_SERVICE_PIPE_HANDLE);
437#[cfg(feature = "f_Win32_System_WindowsProgramming")]
438impl_null_and_validate_handle!(windows::Win32::System::WindowsProgramming::HWINWATCH);
439#[cfg(feature = "f_Win32_System_WinRT")]
440impl_null_and_validate_handle!(
441 windows::Win32::System::WinRT::APARTMENT_SHUTDOWN_REGISTRATION_COOKIE
442);
443#[cfg(feature = "f_Win32_System_WinRT")]
444impl_null_and_validate_handle!(windows::Win32::System::WinRT::HSTRING_BUFFER);
445#[cfg(feature = "f_Win32_System_WinRT")]
446impl_null_and_validate_handle!(windows::Win32::System::WinRT::ROPARAMIIDHANDLE);
447#[cfg(feature = "f_Win32_UI_Accessibility")]
448impl_null_and_validate_handle!(windows::Win32::UI::Accessibility::HUIAEVENT);
449#[cfg(feature = "f_Win32_UI_Accessibility")]
450impl_null_and_validate_handle!(windows::Win32::UI::Accessibility::HUIANODE);
451#[cfg(feature = "f_Win32_UI_Accessibility")]
452impl_null_and_validate_handle!(windows::Win32::UI::Accessibility::HUIAPATTERNOBJECT);
453#[cfg(feature = "f_Win32_UI_Accessibility")]
454impl_null_and_validate_handle!(windows::Win32::UI::Accessibility::HUIATEXTRANGE);
455#[cfg(feature = "f_Win32_UI_Accessibility")]
456impl_null_and_validate_handle!(windows::Win32::UI::Accessibility::HWINEVENTHOOK);
457#[cfg(feature = "f_Win32_UI_ColorSystem")]
458impl_null_and_validate_handle!(windows::Win32::UI::ColorSystem::HCOLORSPACE);
459#[cfg(feature = "f_Win32_UI_Controls")]
460impl_null_and_validate_handle!(windows::Win32::UI::Controls::HDPA);
461#[cfg(feature = "f_Win32_UI_Controls")]
462impl_null_and_validate_handle!(windows::Win32::UI::Controls::HDSA);
463#[cfg(feature = "f_Win32_UI_Controls")]
464impl_null_and_validate_handle!(windows::Win32::UI::Controls::HIMAGELIST);
465#[cfg(feature = "f_Win32_UI_Controls")]
466impl_null_and_validate_handle!(windows::Win32::UI::Controls::HPROPSHEETPAGE);
467#[cfg(feature = "f_Win32_UI_Controls")]
468impl_null_and_validate_handle!(windows::Win32::UI::Controls::HSYNTHETICPOINTERDEVICE);
469#[cfg(feature = "f_Win32_UI_Controls")]
470impl_null_and_validate_handle!(windows::Win32::UI::Controls::HTHEME);
471#[cfg(feature = "f_Win32_UI_HiDpi")]
472impl_null_and_validate_handle!(windows::Win32::UI::HiDpi::DPI_AWARENESS_CONTEXT);
473#[cfg(feature = "f_Win32_UI_Input")]
474impl_null_and_validate_handle!(windows::Win32::UI::Input::HRAWINPUT);
475#[cfg(feature = "f_Win32_UI_Input_Touch")]
476impl_null_and_validate_handle!(windows::Win32::UI::Input::Touch::HGESTUREINFO);
477#[cfg(feature = "f_Win32_UI_Input_Touch")]
478impl_null_and_validate_handle!(windows::Win32::UI::Input::Touch::HTOUCHINPUT);
479#[cfg(feature = "f_Win32_UI_InteractionContext")]
480impl_null_and_validate_handle!(windows::Win32::UI::InteractionContext::HINTERACTIONCONTEXT);
481#[cfg(feature = "f_Win32_UI_Shell")]
482impl_null_and_validate_handle!(windows::Win32::UI::Shell::HDROP);
483#[cfg(feature = "f_Win32_UI_Shell")]
484impl_null_and_validate_handle!(windows::Win32::UI::Shell::HPSXA);
485#[cfg(feature = "f_Win32_UI_TabletPC")]
486impl_null_and_validate_handle!(windows::Win32::UI::TabletPC::HRECOALT);
487#[cfg(feature = "f_Win32_UI_TabletPC")]
488impl_null_and_validate_handle!(windows::Win32::UI::TabletPC::HRECOCONTEXT);
489#[cfg(feature = "f_Win32_UI_TabletPC")]
490impl_null_and_validate_handle!(windows::Win32::UI::TabletPC::HRECOGNIZER);
491#[cfg(feature = "f_Win32_UI_TabletPC")]
492impl_null_and_validate_handle!(windows::Win32::UI::TabletPC::HRECOLATTICE);
493#[cfg(feature = "f_Win32_UI_TabletPC")]
494impl_null_and_validate_handle!(windows::Win32::UI::TabletPC::HRECOWORDLIST);
495#[cfg(feature = "f_Win32_UI_TextServices")]
496impl_null_and_validate_handle!(windows::Win32::UI::TextServices::HKL);
497#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
498impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HACCEL);
499#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
500impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HCURSOR);
501#[cfg(not(feature = "windows_v0_48"))]
502#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
503impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HDEVNOTIFY);
504#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
505impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HDWP);
506#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
507impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HHOOK);
508#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
509impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HICON);
510#[cfg(feature = "f_Win32_UI_WindowsAndMessaging")]
511impl_null_and_validate_handle!(windows::Win32::UI::WindowsAndMessaging::HMENU);