DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 514BHfxH1390095 Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 514BHfxH1390095 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=ZEFklhGH X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9A2BB3858C33 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1738667860; bh=CHRMOZKvp+YY6ivQWvi0c/TldvBM64s4NQdyyKJlLec=; h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=ZEFklhGHmqO6RabIe2Vc5Z/q4U9QtDAyzN4zY338A1XnscRhGCjr8F3P1nIfiZyue ijD9dyFWwDZRcjDiE0hOYN/NFmlKv7urCPHYXS5ZTvL1xlEjzSm0ijJHCNkIt708d0 qp/n2CM9slY/86YureRUsPxdXv2CzW6wds9DrAvc= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0A3C8385841F Date: Tue, 4 Feb 2025 12:17:12 +0100 To: cygwin AT cygwin DOT com Subject: Re: [Ms-nfs41-client-devel] Fwd: Implementing mkfifo, mknod support with NFS_SPECFILE_FIFO and NFS_SPECFILE_SOCK? Message-ID: Mail-Followup-To: cygwin AT cygwin DOT com References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Corinna Vinschen via Cygwin Reply-To: cygwin AT cygwin DOT com Cc: Corinna Vinschen Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" On Feb 4 12:08, Corinna Vinschen via Cygwin wrote: > $ cat > mk-dev-nfs.c < [...] Copy/Paste error, try this one: #include #include #include typedef struct { DWORD ReparseTag; WORD ReparseDataLength; WORD Reserved; struct { BYTE DataBuffer[1]; } GenericReparseBuffer; struct { ULONGLONG Type; union { struct { ULONG Major; ULONG Minor; } Device; WCHAR LnkBuffer[1]; }; } NfsReparseBuffer; } MY_REPARSE_DATA_BUFFER, *MY_PREPARSE_DATA_BUFFER; #define NFS_SPECFILE_LNK 0x00000000014B4E4CL #define NFS_SPECFILE_CHR 0x0000000000524843L #define NFS_SPECFILE_BLK 0x00000000004B4C42L #define NFS_SPECFILE_FIFO 0x000000004F464946L #define NFS_SPECFILE_SOCK 0x000000004B434F53L int main (int argc, char **argv) { HANDLE fh; char buf[65536]; DWORD size_ret; MY_PREPARSE_DATA_BUFFER rp; if (argc < 3) { fprintf (stderr, "usage: %s b|c|f|s [major] [minor]\n", argv[0]); return 1; } fh = CreateFile (argv[1], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL); if (fh == INVALID_HANDLE_VALUE) { fprintf (stderr, "CreateFile: %d\n", GetLastError ()); return 1; } rp = (MY_PREPARSE_DATA_BUFFER) buf; rp->ReparseTag = IO_REPARSE_TAG_NFS; rp->ReparseDataLength = sizeof (ULONGLONG); switch (argv[2][0]) { case 'b': case 'c': if (argc != 5) { fprintf (stderr, "usage: %s b|c|f|s [major] [minor]\n", argv[0]); return 1; } rp->ReparseDataLength += 2 * sizeof (ULONG); rp->NfsReparseBuffer.Type = argv[2][0] == 'b' ? NFS_SPECFILE_BLK : NFS_SPECFILE_CHR; rp->NfsReparseBuffer.Device.Major = strtoul (argv[3], NULL, 0); rp->NfsReparseBuffer.Device.Minor = strtoul (argv[4], NULL, 0); break; case 'f': rp->NfsReparseBuffer.Type = NFS_SPECFILE_FIFO; break; case 's': rp->NfsReparseBuffer.Type = NFS_SPECFILE_SOCK; break; } if (! DeviceIoControl (fh, FSCTL_SET_REPARSE_POINT, (LPVOID) buf, REPARSE_GUID_DATA_BUFFER_HEADER_SIZE + rp->ReparseDataLength, NULL, 0, &size_ret, NULL)) { fprintf (stderr, "DeviceIoControl: %d\n", GetLastError ()); CloseHandle (fh); DeleteFile (argv[1]); return 1; } CloseHandle (fh); return 0; } -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple